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

OpenLayers 2: Unexpected results from Point.distanceTo()

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

是我做错了什么,还是结果出乎我的意料?

尝试

 var line = new OpenLayers.Geometry.LineString([pointA, pointB]);
 console.log("Distance: " +line.getGeodesicLength(epsg4326));

这给你 45,6(Google 地图给你 46m)

-distanceTo 适用于平面测量(地球没有倒塌 :D)

Calculate the closest distance between two geometries (on the x-y plane). http://dev.openlayers.org/docs/files/OpenLayers/Geometry-js.html#OpenLayers.Geometry.distanceTo

希望对您有所帮助