javascript - 百度坐標(biāo),返回目標(biāo)附近有哪些坐標(biāo)
問(wèn)題描述
現(xiàn)在有一張記錄用戶(hù)坐標(biāo)表(使用百度api),兩個(gè)字段記錄,如坐標(biāo)(116.307852,40.057031).
現(xiàn)在先找出所有距離該用戶(hù)1km以?xún)?nèi)的用戶(hù)該如何做?
原以為可以直接:
select * from tablewhere x between 116.307852-1km and 116.307852+1kmand y between 40.057031-1km and 40.057031+1km
對(duì)坐標(biāo)api不熟,謝謝大家?guī)臀铱匆幌?
百度地圖求兩點(diǎn)之間距離
問(wèn)題解答
回答1:如果你的數(shù)據(jù)庫(kù)是MySQL 5.7的話(huà)可以使用空間函數(shù):ST_Distance_Sphere()來(lái)計(jì)算地球上兩點(diǎn)之間的最短距離(單位:米)。如下:
SELECT ST_Distance_Sphere(POINT(lat,lng), POINT(116.307852,40.057031)) as distanceFROM table where distance < 1000
MySQL 5.6版本可以使用 ST_Distance()來(lái)計(jì)算距離。需要注意的是,它計(jì)算的是兩個(gè)2維坐標(biāo)點(diǎn)之間的直線(xiàn)距離,結(jié)果需要乘111195(地球半徑6371000*PI/180)將值轉(zhuǎn)換為米。
