-1

郵便番号、経度/緯度データ、地域、都市などの場所の詳細を含む db テーブルがあります。このデータを使用して、Web アプリケーションでユーザーの場所を表示しています。ここで、ユーザーが検索した場所を距離に応じて並べ替えたいと思います。ユーザーの現在の場所と彼が検索した場所との間の距離を計算し、距離ごとに結果を並べ替えるにはどうすればよいですか。

4

2 に答える 2

1
i just have this function for calculate distance between two latitude,longitude, pleaes have a look if its helpful to you.

function distance(lat1, lon1, lat2, lon2, unit) {
    var radlat1 = Math.PI * lat1/180
    var radlat2 = Math.PI * lat2/180
    var radlon1 = Math.PI * lon1/180
    var radlon2 = Math.PI * lon2/180
    var theta = lon1-lon2
    var radtheta = Math.PI * theta/180
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    dist = Math.acos(dist)
    dist = dist * 180/Math.PI
    dist = dist * 60 * 1.1515
    if (unit=="K") { dist = dist * 1.609344 }
    if (unit=="N") { dist = dist * 0.8684 }
    return dist
}      
于 2012-05-18T10:16:42.223 に答える
1

longitudeとデータが実際にある場合はlatitude、それらを使用して計算し、検索結果を並べ替えることができます。


データ例:

  • 検索を実行しているユーザーの(経度/緯度):51.993073、5.952852
  • ユーザー1(経度/緯度):52.893073、5.952852
  • ユーザー2(経度/緯度):60.993073、5.952852

「ユーザー1」は「ユーザー2」よりも検索を実行しているユーザーに近いことがはっきりとわかります(経度を参照)。

注:これを計算するには式が必要ですJDev。の答えを確認してください。

于 2012-05-18T10:17:22.573 に答える