本文主要是介绍mysql查找附近商店 lat lng,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先
lat纬度($latitude)
lng 经度($longitude)
mysql查询的公式如下
select ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-latitude*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(($longitude*PI()/180-longitude*PI()/180)/2),2)))*1000) AS distance FROM shop having distance <= 100000 order by distance asc
或者
SELECT lng,lat, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($lat*PI()/180-lat*PI()/180)/2),2)+COS($lat*PI()/180)*COS(lat*PI()/180)*POW(SIN(($lng*PI()/180-lng*PI()/180)/2),2)))*1000) AS juli FROM shop HAVING juli<100000 ORDER BY juli ASC
但是 如果不需要距离的计算即可下面这个方式 , 减小where的查询范围来提升性能
select * from shop where latitude > '.$lat.'-1 and latitude < '.$lat.'+1 and longitude > '.$lon.'-1 and longitude < '.$lon.'+1 order by ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.'* 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc limit 10
这篇关于mysql查找附近商店 lat lng的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!