안드로이드로 ArcGIS 를 이용하여 앱을 만들때 거리측정만들기~~
//면적은 라인을 폐합하여 만드므로 마지막에 처음 시작점을 다시 넣어주고 면형Area로 만들면 됨.
1. 변수 지정
public static Boolean tggDistance = false; //거리측정 활성화 여부
public static Boolean measureIsFirst = false; //처음 시작점 여부.
public static MapView m_pMap = null; //맵뷰
public static MultiPath poly = null; //멀티패스
public static string singTapType="" //
2.맵레이어 추가 및 그래픽레이어 추가
//시작할때 맵과 그래픽 레이어를 추가
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context= this;
m_pMap = (MapView) findViewById(R.id.mapControl);
Envelope env = new Envelope(193268.974,521590.768,205273.717,535568.512);
m_pMap.setExtent(env);
ArcGISTiledMapServiceLayer TiledLayer = new ArcGISTiledMapServiceLayer(http://~~~~~~~~);
m_pMap.addLayer(TiledLayer);
//그래픽 레이어 추가
GraphicsLayer graphicsLayer = new GraphicsLayer();
m_pMap.addLayer(graphicsLayer);
m_pMap.setOnSingleTapListener(onMapSingleTapListener()); //화면 싱글탭 이벤트 리스너
}
3. 거리측정 버튼 또는 이미지 클릭이벤트 처리
//만약 거리측정 클릭이벤트가 실행되었다면...
{
(!m_pMap.isLoaded())
{
return;
}
singTapType="polyLine"
measureIsFirst = true;
poly = new Polyline();
graphicsLayer.removeAll();
}
4.화면 싱글탭 이벤트 구현
@SuppressWarnings("serial")
private OnSingleTapListener onMapSingleTapListener() {
return new OnSingleTapListener()
{
@Override
public void onSingleTap(float x, float y)
{
if(!m_pMap.isLoaded()){
return;
}
Point pPnt = m_pMap.toMapPoint(x,y);
if(singTapType.equals("polyLine")){
Graphic graphic = new Graphic(pPnt,new SimpleMarkerSymbol(Color.YELLOW,15,STYLE.CIRCLE));
//graphic.setGeometry();
graphicsLayer.addGraphic(graphic);
if(measureIsFirst){
poly.startPath(pPnt.getX(), pPnt.getY());
measureIsFirst=false;
}else{
poly.lineTo(pPnt.getX(), pPnt.getY());
graphicsLayer.addGraphic(new Graphic(poly,new SimpleLineSymbol(Color.YELLOW ,3)));
double distance = poly.calculateLength2D; //거리
Toast.makeText(context, distance+" m", Toast.LENGTH_LONG).show();
}
} else{
return;
}
}
};
}
'GIS' 카테고리의 다른 글
ArcGIS Server print task 에서 PDF 출력시 한글 및 범례의 일부분 깨지는 현상. (0) | 2014.12.31 |
---|---|
오라클(oracle) 11g에 ST_GEOMETRY 설정하기. (0) | 2013.10.23 |
ArcSDE Connection 수 조정 (Maximum number of connections to instance exceeded) (0) | 2011.12.27 |
SDE에 다이렉트커넥션(DC: DirectConnection) 세션 킬하는 법 (0) | 2011.12.23 |
ST_Geometry 설정 및 사용 (쿼리로 공간정보 다루기) (0) | 2011.06.16 |