我尝试使用OpenLayers 2来计算GPS轨道的点之间的距离。我尝试使用Point.distanceTo()
,只使用点,并将点转换为我的地图。在这两种情况下,我都得到了一个我无法解释的结果:
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var pointA = new OpenLayers.Geometry.Point(5.339911, 60.371876);
var pointB= new OpenLayers.Geometry.Point(5.34003, 60.371471);
console.log("raw: " + pointA.distanceTo(pointB));
pointA = new OpenLayers.Geometry.Point(5.339911, 60.371876).transform(epsg4326, this.map.getProjectionObject());
pointB= new OpenLayers.Geometry.Point(5.34003, 60.371471).transform(epsg4326, this.map.getProjectionObject());
console.log("transformed: " + PointA.distanceTo(pointB));
给出以下输出:
raw: 0.0004221208357810271
transformed: 92.1524487013366
根据http://www.movable-type.co.uk/scripts/latlong.html,结果应为45.51米,这符合我的预期。
我做错了什么,或者结果出现在我不期待的单位?
答案 0 :(得分:1)
尝试
var line = new OpenLayers.Geometry.LineString([pointA, pointB]);
console.log("Distance: " +line.getGeodesicLength(epsg4326));
这给你45,6(谷歌地图给出46米)
-distance用平面测量(地球不是falt:D)
计算两个几何之间的最近距离(在x-y平面上)。 http://dev.openlayers.org/docs/files/OpenLayers/Geometry-js.html#OpenLayers.Geometry.distanceTo
希望这有帮助