美文网首页
通过gps获得你x米范围内的内容

通过gps获得你x米范围内的内容

作者: 小明_d19e | 来源:发表于2021-08-10 13:48 被阅读0次

    这次开发的时候,老板让搜寻你周围xx米范围内的有我们公司坐标的产品,这里,我通过微信小程序获取到了gps,另外,我们产品也都有gps定位,怎么获得2点之间的距离,并通过sql查询出来,这里有个公式:

    set @经度=117.116693;
    set @纬度=39.095976;
    set @longitude=117.116683;
    set @latitude=39.095976;
    select (ACOS(SIN((@纬度*3.1415)/180) * SIN((@latitude*3.1415)/180) + COS((@纬度*3.1415)/180) * COS((@latitude*3.1415)/180) * COS((@经度*3.1415)/180 - (@longitude*3.1415)/180))*6370996)
    

    这里用的是mysql数据库,当纬度相同,经度在0.00001也就是第五位差1的时候,距离差0.86米左右,
    当经度相同,纬度在第五位差1的时候,距离差1.1米左右.
    通过上面的sql,将其作为条件放在where后,就可以检索出表内相关产品了,是不是很简单.

    重点来了,产品少的话上面方法可行,多的话每条记录都要计算一次,那计算量太大了,
    刚刚在群里讨论了下,如果需要检索的点很多,那这个方法不合适了,应该先过滤一次:
    我这里用欧几里得公式:d=((x1-x2)^2+(y1-y2)^2)^(1/2),这里x是经度,y是纬度,这样可直接过滤:
    就是说经纬度保留到小数点后第五位即可,
    根据刚刚10万位差距,我这么算:
    (((x1-x2)*100000)^2+((y1-y2)*100000)^2)^(1/2)

    请大家指教

    相关文章

      网友评论

          本文标题:通过gps获得你x米范围内的内容

          本文链接:https://www.haomeiwen.com/subject/xnixbltx.html