210202

T Map API 다중마커 구현 + 풍선뷰 이벤트 처리(풍선뷰 누를 시 마커삭제) 본문

Android

T Map API 다중마커 구현 + 풍선뷰 이벤트 처리(풍선뷰 누를 시 마커삭제)

dev210202 2020. 2. 24. 16:54

다중마커를 구현하기위해 참고한 사이트다.

https://community.openapi.sk.com/t/tmap/6715/2

 

TMap에 다중마커를 표시하고 싶습니다.

안녕하세요. T map API 운영담당자 입니다. 보내주신 소스를 검토해본 결과 addMarkerItem을 할때 부여하는 id값이 for문을 돌면서 같은 id로 중복으로 생성되어 이전의 마커는 지워지며 마지막 배열값을 가지고 마커를 생성하는것을 확인하였습니다. 다중으로 마커 생성시 마커를 생성할때 마다 각기 다른 아이디값을 부여해줘야 합니다. 아래 소스는 다중마커를 생성하는 예제입니다. 참고하시면 도움이 되실 것 같습니다. -----------------

community.openapi.sk.com

다중마커 구현 

다중마커 구현은 위의 사이트에서 처럼 지도에 마커를 찍을 좌표들(alTmapPoint)을 불러와서 반복문에서 계속해서 마커에 좌표들을 지정해주고 tMapView에 추가하는 방식이다.

여기서 잘 봐야할 부분은 TMapMarkerItem을 계속해서 생성하는 점과 tMapView에 마커를 추가할때 id를 변동시켜야 한다는 점이다. 이 두 부분을 꼭 지켜야 정상적으로 마커들이 출력된다.

 

풍선뷰 누를 시 마커 삭제

풍선뷰를 나오게 하려면 먼저 http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapMarkerItem_setCanShowCallout을 참고하여 풍선뷰를 사용할 수 있게 설정해줘야 한다. 그 후 setCalloutTitle, setCalloutSubTitle 등 추가적인 선택을 해주면 된다.

만약 풍선뷰  클릭시 호출되는 OnCalloutRightButtonClickCallback를 구현하고 싶다면 setCallOutRightButtonImage 메소드를 사용하여 꼭 풍선뷰의 오른쪽에 이미지를 줘야한다.(오른쪽 이미지를 클릭하게 되면 호출되기 때문)

마커 삭제는 http://tmapapi.sktelecom.com/main.html#android/docs/androidDoc.TMapView_removeMarkerItem을 참고하여 구현했다. 특정 아이디를 가진 마커를 삭제하는 메소드를 사용한다.

OnCalloutRightButtonClickCallback을 통해서 만약 풍선뷰에 오른쪽 이미지가 클릭되면 마커가 삭제되게 구현하면 완성이다.

OnCalloutRightButtonClickCallback에서는 풍선뷰의 마커아이템을 반환한다.(TMapMarkerItem tMapMarkerItem)

이 반환된 마커 아이템의 id를 가져오고 가져온 id를 가진 마커를 삭제하게 한다.

tMapView.setOnCalloutRightButtonClickListener(new TMapView.OnCalloutRightButtonClickCallback() {
            @Override
            public void onCalloutRightButton(TMapMarkerItem tMapMarkerItem) {
                String id = tMapMarkerItem.getID();
                tMapView.removeMarkerItem(id); 
            }
});

 

T Map API를 처음써보거나 API 문서에 익숙치 않은 초보자라면 꼭 한번 따라해볼 것을 추천한다.

Comments