为什么esri.geometry.getLength工作错误?

时间:2013-01-31 12:16:29

标签: javascript geometry gis arcgis

函数http://help.arcgis.com/en/webapi/javascript/arcgis/jsapi/#namespace_geometry/esri.geometry.getLength应该计算点之间的距离。

当我试图计算它们之间有100米的点之间的距离时

p1=new esri.geometry.Point(3997030.6690969253, 7444299.320646087, new esri.SpatialReference({ wkid: 102113 }));
Object
p2=new esri.geometry.Point(3996951.455397143, 7444142.154020177, new esri.SpatialReference({ wkid: 102113 }));
Object
esri.geometry.getLength(p1, p2)
176.00045037719127

我得到176这是错误的。投影是Web Mercator(WKID 102113)。

1 个答案:

答案 0 :(得分:1)

看起来它只计算两点(3997030,7444299)和(3996951,7444142)之间的简单欧几里德地图距离。

a^2 + b^2 = c^2 
where a = (3997031 - 3996951) and b = (7444299 - 7444142)
c = 176

所以176是地图距离,你想要的是真实世界的地面距离。你可能不得不使用GeometryService来实现这一点,我不认为Javascript可以自己做。这是ESRI的样本:https://developers.arcgis.com/javascript/jssamples/util_distance.html