3

我创建了一个网页,使用 javasvipt 在 ersi 地图上显示标记。

Data: 
MapNorth    MapEast
439624  504743
439622  504736
439722  504775
439738  504739
439715  504774
439734  504739

javascript代码:

var points = data.map(function(x){
                    return [x.MapEast, x.MapNorth];
                });

                var myMultiPoint = {"geometry":{"points":points,"spatialReference":27700},"symbol":{"color":[255,255,255,64],
                "size":6,"angle":0,"xoffset":0,"yoffset":0,"type":"esriSMS","style":"esriSMSCircle",
                "outline":{"color":[0,0,0,255],"width":6,"type":"esriSLS","style":"esriSLSSolid"}}};  

                var gra = new esri.Graphic(myMultiPoint);

                myMap.graphics.add(gra);

                var graExtent = esri.graphicsExtent(myMap.graphics.graphics); 
                myMap.setExtent(graExtent); 

上面的代码所做的是在地图上绘制标记,然后放大范围。我的雇主现在想要的是让我找到所有这些点的中心点并在中心显示一个标记。

这可以做到吗?如果是这样,你告诉我怎么做?

谢谢保罗

4

3 回答 3

1

几件事。

  1. 您知道 gis.stackexchange.com 吗?他们可能会更好地解决您的问题。
  2. 您要做的是找到多边形的中心,假设这些点并不都在一条线上。
  3. 这是我认为您要问的问题的答案的链接https://gis.stackexchange.com/questions/7998/how-can-i-calculate-the-center-point-inside-a-polygon-in -arcgis-9-3

那里发布的解决方案使用 getExtent().getCenter() 如此处所示

var myPolygonCenterLatLon = myPolygon.getExtent().getCenter();
于 2014-10-15T10:12:56.567 回答
0

我认为您在这里要做的不是创建 a Multipoint,而是Polygon从您的点数组中创建 a 。一旦你定义了一个多边形,你可以做类似的事情

var myPolygon = new Polygon(points);
var centroid = myPolygon.getCentroid();

这应该让你得到构成多边形的点的质心。

https://developers.arcgis.com/javascript/jsapi/polygon-amd.html

请注意,这至少需要 3.7 版的 JS API。

于 2015-06-03T12:47:44.850 回答
0

向那些试图使用 .getCentriod() 的人指出一件事,确保你的多边形是封闭的。您的第一个点和最后一个点需要在同一个位置。否则它将无法正常工作。(我在一年前遇到过这个,不确定他们是否改变了这个)

于 2015-10-09T13:33:49.237 回答