[NaverMap API/Kotlin] 반경 원 그리기 & 좌표 거리 계산

Eunho Bae·2022년 6월 26일
0

좌표 원 그리기

네이버맵 API 같은 경우 locationOverlay를 이용해서 원을 그려줄 수 있으나 불투명도를 지원하지 않아서 카카오맵, 구글API에서 지원하는 것처럼 구현할 수 없었다.

아래와 같이 코드를 짜주면 된다. (destLoc은 기준 좌표)

    companion object {
        const val DISTANCE = 300 // 단위 : 미터
    }


 private fun updateLocationOverlay(){
        val destLoc = viewModel.getDestinationLocation()
        
        map.locationOverlay.position = LatLng(destLoc.latitude, destLoc.longitude)
        map.locationOverlay.isVisible = true
        map.locationOverlay.circleRadius =
            (DISTANCE / map.projection.metersPerPixel).toInt()
    }


두 좌표 간의 거리 계산

 private fun calDist(lat1:Double, lon1:Double, lat2:Double, lon2:Double) : Long{
        val EARTH_R = 6371000.0
        val rad = Math.PI / 180
        val radLat1 = rad * lat1
        val radLat2 = rad * lat2
        val radDist = rad * (lon1 - lon2)

        var distance = Math.sin(radLat1) * Math.sin(radLat2)
        distance = distance + Math.cos(radLat1) * Math.cos(radLat2) * Math.cos(radDist)
        val ret = EARTH_R * Math.acos(distance)

        return Math.round(ret) // 미터 단위
    }
profile
개인 공부 정리

1개의 댓글

comment-user-thumbnail
2023년 5월 8일

안녕하세요 네이버 지도를 사용하여 내위치 반경 km 원을 그리려고 하는데 도저히 감이잡히지 않아 글을 적게되었습니다. 자문을 조금 해주실수있으실까요??

답글 달기