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