最小地图标记间隔方程

时间:2012-03-22 22:21:23

标签: javascript math maps equation

我希望有一个方程来计算地球规范平面地图投影的每个缩放级别,给定标记的尺寸,地图标记可以放置而不重叠的最小间距(以米为单位) 。唉,我不是数学家。任何人?

例如: 缩放等级5(相当远,约为大陆等级),标记变暗:30x30 = 80000米

1 个答案:

答案 0 :(得分:1)

使用半正公式计算地图上两点之间的距离。然后根据您的缩放/地图上的图钉大小来应用最小距离。

function haversine(lat1, lon1, lat2, lon2) {
    var R = 6371000; // m
    var dLat = (lat2-lat1)* Math.PI / 180;
    var dLon = (lon2-lon1)* Math.PI / 180;
    var lat1 = lat1* Math.PI / 180;
    var lat2 = lat2* Math.PI / 180;

    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;
}