ストレージにmongooseとMongoDBを使用しているnode.js Webアプリを開発しています。位置情報アプリです。そのため、データベースに保存されている最寄りの 10 か所を見つける必要がある場合があります。この距離を計算するには、次の方法があります。
var haversine = function(p1, p2) {
var R = 6371; // km
var dLat = toRad(p2.lat-p1.lat);
var dLon = toRad(p2.lon-p1.lon);
var lat1 = toRad(p1.lat);
var lat2 = toRad(p2.lat);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d;
}
ここで、p1 と p2 はポイント {lat: 整数、lon: 整数} です。
では、最寄りの場所を見つけるにはどうすればよいですか?