210202
T Map API 다중마커 구현 + 풍선뷰 이벤트 처리(풍선뷰 누를 시 마커삭제) 본문
다중마커를 구현하기위해 참고한 사이트다.
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 문서에 익숙치 않은 초보자라면 꼭 한번 따라해볼 것을 추천한다.
'Android' 카테고리의 다른 글
Kotlin 데이터 바인딩과 네비게이션을 사용하여 프래그먼트 구현 + 몇가지 오류들 해결 (0) | 2020.03.09 |
---|---|
Kotlin으로 Facebook 소셜 로그인 구현 + 유저 데이터 가져오기 (0) | 2020.03.08 |
Retrofit을 사용한 서버통신(jsonplaceholder 사이트 사용) (0) | 2020.02.22 |
뷰페이저(ViewPager) FragmentStatePagerAdapter로 구현하기 + 특정 프래그먼트에 도달하면 다이얼로그 띄워주기 (0) | 2020.02.20 |
프로그레스 다이얼로그 구현 (0) | 2020.02.20 |