2015-01-02 1 views
1

내지도에서 도형의 중심에 전화를하고 싶다는 점에서 하나의 응용 프로그램을 개발 중입니다. 저는 arcgis를 처음 사용합니다. 나는 너무 많이 노력했지만 센터에서 전화를받지 못했습니다. 아무도 도와 줄 수 없습니까? 이 문제geomery arcgis android에서 센터 포인트를 찾는 방법은 무엇입니까?

이는 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

짧은 대답 : GeometryEngine.getLabelPointForPolygon(Polygon, SpatialReference)을 사용하십시오.

긴 대답 : 사용자 코드에서

...

int polygonpointscount=polygon.getPointCount(); 
if(polygonpointscount!=0) 
{ 
    pointsize=polygonpointscount/2; 
} 

Polygon.getPointCount()는 다각형의 정점을 반환합니다. 예를 들어 다각형이 사각형 인 경우 getPointCount()이 모퉁이를 반환합니다. 따라서 Callout은 중심에서가 아니라 모퉁이 중 하나에있게됩니다.

대신 GeometryEngine.getLabelPointForPolygon(Polygon, SpatialReference)을 사용하십시오. 중심점을 반환하는 것은 보증하지 않지만 라벨링에 좋은 내부 점을 반환합니다 (내 중심점처럼 보입니다). getLabelPointForPolygon에 다각형의 공간 참조가 무엇인지 알려주는 SpatialReference 객체를 전달해야합니다.

중심점이 필요한 경우 ArcGIS의 Feature to Point 도구를 기반으로하는 지오 프로세싱 서비스를 만들어야합니다. 그러나 getLabelPointForPolygon은 구현하기가 훨씬 쉽고 실행 속도가 빠르고 사용자의 요구를 만족시킬 수 있습니다.

+0

대단히 @ 게리, 내 문제를 해결해 주셔서 감사합니다, 나는 폴리 라인과 함께 다른 문제가, 나는 폴리 라인의 중심점을 얻을 수 없습니다, 어떻게 말해 줄래? 폴리 라인과 범위의 중심점을 얻으십시오 – user3110855

+0

[MultiPath.queryEnvelope (Envelope)] (https://developers.arcgis.com/android/api-reference/reference/com/esri/core/geometry/MultiPath.html)을 시도해보십시오. (다중 선을 확장하는 폴리 라인) 폴리선의 경계 상자를 가져온 다음 Envelope의 getCenter, getCenterX 및 getCenterY 메서드를 호출합니다. –

0
+0

저는 arcgis 서버를 사용하고 있지만 ur 예제를 이해할 수 없었습니다. – user3110855

+0

모든 지오메트리를 gdb에 저장할 수 있습니다. arccatalog에서 gdb를 열고 feature to point 도구를 사용하여 centroid를 계산하십시오. 그럼 당신은 새 층으로 arcgis 서버에 새로운 centroid 레이어를 게시 할 수 있습니다 –

관련 문제