OpenLayers 2:Point.distanceTo()的意外结果

时间:2017-02-02 07:31:21

标签: javascript openlayers

我尝试使用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米,这符合我的预期。

我做错了什么,或者结果出现在我不期待的单位?

1 个答案:

答案 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

希望这有帮助