我在我的數據庫中記錄了多個地址,並且我使用Google地理編碼服務獲取了他們的經度,緯度等。如果我擁有多個地址的所有Google地址解析數據,我如何計算他們的鄰近度?
我需要做些什麼來計算距離另一個地址的距離?
理想情況下,我想顯示一個條目,然後在下面說:「以下記錄的地址在附近。」
我在我的數據庫中記錄了多個地址,並且我使用Google地理編碼服務獲取了他們的經度,緯度等。如果我擁有多個地址的所有Google地址解析數據,我如何計算他們的鄰近度?
我需要做些什麼來計算距離另一個地址的距離?
理想情況下,我想顯示一個條目,然後在下面說:「以下記錄的地址在附近。」
例如參見http://www.movable-type.co.uk/scripts/latlong.html。
在儀表:
D_AB = 6378137 * acos(cos(PI/ 180 * latA) * cos(PI/ 180 * lngA) *
cos(PI/ 180 * latB) * cos(PI/ 180 * lngB) + cos(PI/ 180 * latA) *
sin(PI/ 180 * lngA) * cos(PI/ 180 * latB) * sin(PI/ 180 * lngB) +
sin(PI/ 180 * latA) * sin(PI/ 180 * latB))
有幾種算法轉換緯度/經度座標,距離英里。
參考: http://www.meridianworlddata.com/Distance-Calculation.asp
我測試了所有的人,如果你真的擔心的表現,你可以使用:
sqrt(x * x + y * y)
where x = 69.1 * (lat2 - lat1)
and y = 53.0 * (lon2 - lon1)
這是一個足夠好的近似。
如果你所擔心的是接近那麼曼哈頓距離可能就足夠了。
boolean isProximate (double latE , double longE)
{
return ((Math . abs (latA - latB) < latE) && (Math . abs (longA - longB) < longE)) ;
}