如何从几何arcgis android中找到中心点?

时间:2015-01-02 07:48:00

标签: android computational-geometry arcgis

我正在开发一个应用程序,我想在我的地图上显示几何中心的呼叫我是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); 

2 个答案:

答案 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更容易实现,执行速度更快,可能满足您的需求。