我将 OpenLayers 与普通墨卡托地图一起使用,并尝试通过查找经纬度中的点网格来对边界框进行采样。
bbox 以 latlon 表示,例如
48.1388,-15.3616,55.2057,-3.9359
我可以定义一个距离degrees(例如 x:2.5,y:2.4)并从那里算出点。
但我想表达这个距离metres(例如 50000),以便将其与用户心态联系起来(人们理解米,而不是度)。
我怎样才能转换这个距离?我知道如何重新投影一个点,但不知道如何重新投影距离。
感谢您的任何提示!
穆隆
Use the 半正矢公式 http://en.wikipedia.org/wiki/Haversine_formula获取纬度/经度两点之间的距离。这假设地球是一个球体(在大多数情况下,“足够好”)。
它的 Javascript 实现(无耻地从here http://www.movable-type.co.uk/scripts/latlong.html)看起来像这样:
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)