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
希望对您有所帮助
我尝试使用 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
希望对您有所帮助