Javascript - 以纬度和经度编程返回附近的地方

时间:2012-12-12 12:48:21

标签: javascript jquery localization geolocation openstreetmap

是否可以到达附近的地方,提供纬度和经度?

例如,如果我想在50公里的范围内提供Lat,Long,那么我该如何实现呢?

有算法/公式吗?

我正在使用OpenStreetMap地理位置

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用以下公式计算两个给定坐标之间的距离: (lat1,lon1)和(lat2,lon2)

dist = arccos(sin(lat1) · sin(lat2) + cos(lat1) · cos(lat2) · cos(lon1 - lon2)) · R

参考:Great-circle_distance

现在假设您已将所有这些坐标保存在数据库中,然后您可以运行查询以查找距离范围50公里范围内的所有位置。

SELECT * FROM Places WHERE acos(sin(1.3963) * sin(Lat) + cos(1.3963) * cos(Lat) * cos(Lon - (-0.6981))) * 6371 <= 50;

也可以在Javascript中执行此操作。您需要使用一些Math函数并遍历存储co-oridinate的数组来检查距离。

答案 1 :(得分:1)

我认为你可以使用这个公式来找到基于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
                        });