0

データベースに複数の住所が記録されており、Google Geocoding サービスを使用して経度、緯度などを取得しました。

ある住所から別の住所までの距離をマイル単位で計算するにはどうすればよいですか?

理想的には、エントリを表示し、その下に「次の記録された住所は近くにあります」と表示したいと考えています。

4

3 に答える 3

1

たとえば、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))
于 2010-09-06T20:10:05.710 に答える
1

緯度/経度の座標をマイル単位の距離に変換するアルゴリズムがいくつかあります。

参照: http://www.meridianworlddata.com/Distance-Calculation.asp

それらすべてをテストしましたが、パフォーマンスが本当に心配な場合は、次を使用できます。

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 53.0 * (lon2 - lon1) 

これは十分な近似です。

関連: PHP MySql とジオロケーション

于 2010-09-06T20:11:03.537 に答える
0

心配するのが近さだけなら、マンハッタンの距離で十分かもしれません。

boolean isProximate ( double latE , double longE )
{
      return ( ( Math . abs  ( latA - latB ) < latE ) && ( Math . abs ( longA - longB ) < longE ) ) ;
}
于 2010-09-06T23:05:19.953 に答える