본문 바로가기
안드로이드 자바

[Java][Android] 마커 클릭 비활성화 (클릭 막기)

by teamnova 2023. 1. 13.
728x90

https://stickode.tistory.com/655

 

[Java][Android] 네이버 지도 - 숫자 마커 만들기(롱클릭 이벤트)

안녕하세요. 이번 시간에는 지도 위에 숫자 마커를 찍어보도록 하겠습니다. 원하는 결과는 이렇습니다. https://navermaps.github.io/android-map-sdk/guide-ko/ Home · 네이버 지도 안드로이드 SDK No results matching

stickode.tistory.com

안녕하세요

마커생성에 이어 마커 삭제와 클릭 비활성화를 구현해보겠습니다.

 

1. 마커 삭제

thisMarker.setMap(null);

생성된 마커가 있을 때 해당 코드를 통해 지도위에서 마커를 삭제할 수 있습니다.

네이버 지도 공식문서 (참고)

https://navermaps.github.io/android-map-sdk/guide-ko/5-2.html

 

마커 · 네이버 지도 안드로이드 SDK

마커 마커는 지도상의 한 지점을 나타내기 위한 오버레이로, 지도에서 가장 널리 사용되는 요소입니다. 마커를 사용하면 특정 지도상 좌표에 아이콘과 캡션을 표시할 수 있습니다. 마커의 아이

navermaps.github.io

 

 

2. 마커 클릭 이벤트

thisMarker.setOnClickListener(new Overlay.OnClickListener() { 
    @Override
    public boolean onClick(@NonNull Overlay overlay) { // boolean형

        dialog.show(); // 커스덤 다이얼로그 띄우기
        return true;

    }
});

원하는 다이얼로그나 원하는 이벤트를 실행합니다.

 

 

3. 마커 클릭 이벤트 비활성화

thisMarker.setOnClickListener(new Overlay.OnClickListener() {
    @Override
    public boolean onClick(@NonNull Overlay overlay) {
        return false;
    }
});

return false를 통해 클릭을 비활성화 할 수있습니다. 

 

 

적용하기

ArrayList<Marker> markerArrayList = new ArrayList<>();
Marker thisMarker = new Marker(); // 객체 생성을 했지만 실제론 방금 추가한 마커 사용하기

int deactivation = markerArrayList.indexOf(thisMarker); 
Log.e(TAG, "마커비활성화 : "+deactivation); // 객체있으면 0~ 없으면 -1리턴


if(deactivation >= 0) { // 객체가 하나라도 있다면

    for (int i=0; i<markerArrayList.size(); i++) { //마커가 들어있는 리스트만큼 반복한다. (전부 비활성화시키기 위해)

        markerArrayList.get(i).setOnClickListener(new Overlay.OnClickListener() {
            @Override
            public boolean onClick(@NonNull Overlay overlay) {
                //객체 하나하나에 마커클릭이벤트를 false로 리턴해준다.
                return false;
            }
        });
    }
}