Jump to content

마커 삭제 기능 한번 봐주세요.


Recommended Posts

	val markers = mutableListOf<Marker>()

      naverMap.addOnCameraIdleListener {
             //Toast.makeText(this, "카메라 움직임 종료", Toast.LENGTH_SHORT).show()
            Log.d("mgm", "카메라 움직임 ${myInt}")
            // 카메라의 움직임이 종료되면 디비에서 마커 위치 정보를 가져와 설정
            if(myInt == 0){
                Log.d("mgm", "ececute myInt 0")
                locations = arrayOf(
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),

                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                )
            }else{
                Log.d("mgm", "ececute myInt !0")
                locations = arrayOf(
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0),
                    SetLatLong(0,0)
                )
            }
            removeMarkers()
            addMarkers()
            myInt += 1
        }
      
	// 마커 추가하기
    fun addMarkers() {
        executor.execute {
            //val markers = mutableListOf<Marker>()
            for (location in locations) {
                markers += Marker().apply {
                    position = LatLng(location.latitude, location.longitude)
                }
            }
            // 마커 설정 기능
            handler.post {
                markers.forEach { marker ->
                    marker.map = mNaverMap
                }
            }
        }
    }
    
    
    // 설정된 마커 지우기
    fun removeMarkers() {
        GlobalScope.launch(Dispatchers.Main) {
            markers.forEach { marker ->
                marker.map = null
            }
        }
    }

(위도 경도는 일부러 0,0으로 변경했습니다.)

작업중인 기능은 '카메라 움직임 종료'가 감지되면 DB에서 카메라 중점 위도 경도 반경 000m 이내의 위도 경도를 찾아 지도에 마커를 표시하는 기능입니다.

이 기능을 위해서 기존에 설정된 마커가 있다면 마커를 전부 지우고 새로운 마커를 설정해야 하는데 마커를 지우는 과정에서 오류가 생깁니다.

위 코드에서 뭐가 문제인지, 다른 방법이 있는지 답변 부탁드립니다.

링크 복사
다른 사이트에 공유하기

게시글 및 댓글을 작성하려면 로그인 해주세요.



로그인
×
×
  • Create New...