【发布时间】:2012-12-12 12:48:21
【问题描述】:
【问题讨论】:
-
我正在使用 openstreetmap 地理位置
-
查看 openstreemap 地理定位 API 参考,您可能会在那里找到一些东西。
标签: javascript jquery localization geolocation openstreetmap
【问题讨论】:
标签: javascript jquery localization geolocation openstreetmap
您可以使用以下公式计算两个给定坐标之间的距离: (lat1, lon1) 和 (lat2, lon2)
dist = arccos(sin(lat1) · sin(lat2) + cos(lat1) · cos(lat2) · cos(lon1 - lon2)) · R
现在假设您已将所有这些坐标保存在数据库中,然后您可以运行查询以查找范围 50 公里内的所有位置。
SELECT * FROM Places WHERE acos(sin(1.3963) * sin(Lat) + cos(1.3963) * cos(Lat) * cos(Lon - (-0.6981))) * 6371 <= 50;
也可以在 Javascript 中执行此操作。您需要使用一些数学函数并遍历存储坐标的数组以检查距离。
【讨论】:
我认为您可以使用此公式根据 lat/lng 找到 2 点之间的距离。然后,您可以将其用于您的目的:
var kmBetween = function(a, b){
var e = Math, ra = e.PI/180;
var b = b.lat * ra, c = a.lat * ra, d = b - c;
var g = b.lng * ra - a.lng * ra;
var f = 2 * e.asin(e.sqrt(e.pow(e.sin(d/2), 2) + e.cos(b) * e.cos(c) * e.pow(e.sin(g/2), 2)));
return f * 6378.137;
}
var distance = kmBetween({
lat: 45.5,
lng: 33.4
},
{
lat: 44.3,
lng: 32.4
});
【讨论】: