用户绘制的手绘折线如何获取坐标?(ArcGIS JavaScript API)

3

我是新来的,已经使用ArcGIS JavaScript API两周了。

我遵循了这个示例:

http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/#sample/graphics_add

我能够在地图上绘制自由手折线。现在我需要计算该折线上每个点的坐标。我已经尝试了五天,但仍然无法弄清楚如何做到这一点。如果您能详细解释一下如何做到这一点(因为我没有太多经验),我将不胜感激。

提前致谢,

Diego。


404。您是否意图链接到http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/#sample/graphics_add? - Crescent Fresh
1个回答

3
你需要检查从onDrawEnd事件中获取的geometry对象 - 这个事件已经在示例中被挂钩了:dojo.connect(tb, "onDrawEnd", addGraphic); 但它只是用一个基本符号将线添加到地图上。第一个陷阱是geometry对象实际上不会是geometry类型 - 那是一个不存在的抽象基类。类型将取决于您用来绘制形状的工具 - 在您的情况下,它似乎将是Polyline类型。
这个Polyline对象有一个属性paths,它是一个嵌套的路径(线)数组,每个路径包含一个点数组。因此,如果您想获取Polyline对象中所有路径的所有点:
function addGraphic(geo) {
    //For each path...
    for ( var path = 0; path < geo.paths.length; path ++ ) {
        //For each point in the path...
        for ( var pt = 0; pt < geo.paths[path].length; pt++ ) {
            //Do something with each point in here...
            //X coordinate: geo.paths[path][pt][0]
            //Y coordinate: geo.paths[path][pt][1]
        }
    }
}

您可能需要对一些其他对象(如继承自geometry的对象)进行更多的检查,因为包含实际坐标的属性在折线、多边形、点等之间有所不同。


别担心。如果你在答案旁边点击勾号,每个人都会得到一只免费的小猫咪。 :) - Juffy
坐标是以屏幕单位还是地图单位表示的? - Diego Castillo
1
没关系,我找到了一种将其转换为地理坐标的方法,我只需要添加:geo = esri.geometry.webMercatorToGeographic(geo); - Diego Castillo
1
好的,做得很好。你可能已经注意到了,坐标将以地图的空间参考返回,大多数(全部?)情况下这将是Web墨卡托投影。如果您在处理几何图形时遇到奇怪的结果,首先要检查的是您是否使用了正确的空间参考。 :) - Juffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接