대피소의 주소를 파싱해서 지도위의 마커를 등록하는 메소드입니다.
public void searchShelter() {
new MapView.POIItemEventListener() {
@Override
public void onPOIItemSelected(MapView mapView, MapPOIItem mapPOIItem) {
AlertDialog.Builder builder = null;
builder.setTitle("대피소정보").setMessage(mapPOIItem.getItemName());
AlertDialog alertDialog = builder.create();
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int id)
{
Toast.makeText(getApplicationContext(), "검색어를 다시 입력해주세요.", Toast.LENGTH_SHORT).show();
}
});
alertDialog.show();
}
@Override
public void onCalloutBalloonOfPOIItemTouched(MapView mapView, MapPOIItem mapPOIItem) {
Toast.makeText(getApplicationContext(), "이벤트2", Toast.LENGTH_SHORT).show();
}
@Override
public void onCalloutBalloonOfPOIItemTouched(MapView mapView, MapPOIItem mapPOIItem, MapPOIItem.CalloutBalloonButtonType calloutBalloonButtonType) {
Toast.makeText(getApplicationContext(), "이벤트3", Toast.LENGTH_SHORT).show();
}
@Override
public void onDraggablePOIItemMoved(MapView mapView, MapPOIItem mapPOIItem, MapPoint mapPoint) {
Toast.makeText(getApplicationContext(), "이벤트4", Toast.LENGTH_SHORT).show();
}
};
ShelterApi parser = new ShelterApi();
MapPoint mappoint = null;
System.out.println("쉘터API 객체 만든후");
ArrayList<mapPoint> list = null;
try {
System.out.println("api파서서치 호출전 ");
list = parser.Search(edit_address);
System.out.println("api파서서치 호출후");
} catch (Exception e) {
e.printStackTrace();
}
for (mapPoint entity : list) {
int i=0;
System.out.println("폴문시작");
System.out.println("마커옵션객체생성");
entity.getLatitude(); //대피소좌표 구하기
entity.getLongitude(); //대피소좌표 구하기
entity.getName(); //대피소 이름 구하기
entity.getrddr(); //대피소 주소 구하기
mappoint = MapPoint.mapPointWithGeoCoord(entity.getLatitude(), entity.getLongitude()); //mappoint에 좌표설정
marker.setItemName("시설명 : "+entity.getName()+"\n상세주소 : "+entity.getrddr()+"\n시설면적 : "+entity.getfclty_ar()+
"\n 전화번호 : "+entity.getMngps_telno()); // marker 이름설정
System.out.println("마커위치설정 : " + entity.getLatitude() + " , " + entity.getLongitude());
marker.setTag(i);
marker.setMapPoint(mappoint);
marker.setMarkerType(MapPOIItem.MarkerType.BluePin); // 기본으로 제공하는 BluePin 마커 모양.
marker.setSelectedMarkerType(MapPOIItem.MarkerType.RedPin); // 마커를 클릭했을때, 기본으로 제공하는 RedPin 마커 모양.
// marker.setShowDisclosureButtonOnCalloutBalloon(false);
marker.getCustomCalloutBalloon();
// mMapView.addPOIItem(marker);
i++;
mMapView.setMapCenterPoint(mappoint,true); //실행됨
mMapView.setZoomLevel(7,true); //실행됨
mMapView.setPOIItemEventListener((MapView.POIItemEventListener) this);
mMapView.setMapViewEventListener((MapViewEventListener) this);
mMapView.addPOIItem(marker); //실행됨
}
}
공공데이터포털에서 파싱한 XML문서를 통해서
XML 파일 내부의 대피소의 주소를 검색해서 카카오맵 위에 마커를 표시해주는 기능을 구현중입니다.
파싱완벽하게 되는것도 확인했고 마커도 이상없이 등록됩니다.
카카오 예제를 이용해서 마커 클릭 이벤트를 등록하고싶습니다.
어떻게 해야하는지 감이 잡히지 않아서 질문드려봅니다 …