我正在开发一个应用程序,我想在我的地图上显示几何中心的呼叫我是arcgis的新手。我试了很多但是我无法在中心打电话,请有人帮我怎么样解决这个问题
我的代码
SimpleFillSymbol sfs = new SimpleFillSymbol(
Color.RED);
sfs.setAlpha(5);
graphic = new Graphic(feature.getGeometry(),
sfs, feature.getAttributes());
Polygon polygon = (Polygon) graphic
.getGeometry();
int polygonpointscount=polygon.getPointCount();
if(polygonpointscount!=0)
{
pointsize=polygonpointscount/2;
}
Point midpoint = polygon.getPoint(pointsize);
Callout callout = mMapView.getCallout();
if (callout != null
&& callout.isShowing()) {
callout.hide();
}
//Set the content, show the view
callout.setContent(adminsearchloadView(governorate_Name,
area_Name,
block_Number));
callout.setStyle(R.xml.calloutstyle);
callout.setMaxHeight(100000);
callout.setMaxWidth(100000);
callout.refresh();
callout.show(midpoint);
答案 0 :(得分:0)
如果您使用arcgis服务器,您可以尝试“功能指向”:http://resources.arcgis.com/en/help/main/10.1/index.html#//00170000003m000000来计算质心图层。
答案 1 :(得分:0)
简短回答:使用GeometryEngine.getLabelPointForPolygon(Polygon, SpatialReference)
。
答案很长:
从你的代码......
int polygonpointscount=polygon.getPointCount();
if(polygonpointscount!=0)
{
pointsize=polygonpointscount/2;
}
Polygon.getPointCount()
返回多边形的顶点。例如,如果多边形是矩形,getPointCount()
将返回角。因此,Callout
将位于其中一个角落,而不是位于质心处。
相反,使用GeometryEngine.getLabelPointForPolygon(Polygon, SpatialReference)
。它不保证返回质心,但它返回一个有利于标记的内部点(它看起来像我的质心)。确保传递SpatialReference
对象,告诉getLabelPointForPolygon
多边形的空间参考是什么。
如果您必须拥有质心,则需要基于ArcGIS的Feature to Point工具创建地理处理服务。但是,getLabelPointForPolygon
更容易实现,执行速度更快,可能满足您的需求。