Constructor 링크 복사

KNMapView 클래스는 KNSDK를 통해 생성되어야 합니다.

KNMapView에 랜더러를 바인딩합니다. 제공되는 랜더러는 디바이스 환경에 따라 Opengles 2.0 혹은 Opengles 3.0을 사용합니다.

KNSDK.bindingMapView(mapView: KNMapView, theme: KNMapTheme, completion: ((KNError?)Unit)?)
KNSDK.bindingMapView(mapView: KNMapView, theme: KNMapTheme, completion: ((KNError?) → Unit)?)
코드가 숨겨졌습니다.
예시 코드 KNSDK.bindingMapView
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}
코드가 숨겨졌습니다.

함수 링크 복사

지도에 경로를 설정합니다.

fun setRoute( route: KNRoute )
예시 코드 setRoute
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun routeWithMapView(route: KNRoute) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.setRoute(route)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun routeWithMapView(route: KNRoute) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.setRoute(route)
}
코드가 숨겨졌습니다.

route
경로

경로 리스트를 전달받아 지도에 경로를 설정합니다.

fun setRoutes( routes: List<KNRoute> )
예시 코드 setRoutes
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun routeListWithMapView(routes: List<KNRoute>) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.setRoutes(routes)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun routeListWithMapView(routes: List<KNRoute>) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.setRoutes(routes)
}
코드가 숨겨졌습니다.

routes
경로 리스트

지도에 설정된 모든 경로 리스트를 반환합니다.

fun getRoutes(): List<KNRoute>
예시 코드 getRoutes():
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getRouteWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.getRoutes()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getRouteWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.getRoutes()
}
코드가 숨겨졌습니다.

지도에 등록된 모든 경로를 삭제합니다.

단순히 이전 경로에서 새로운 경로로 교체하는 경우 이 함수를 호출하지 않아도 됩니다.

fun removeRoutesAll()
예시 코드 removeRoutesAll()
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeRouteAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.removeRoutesAll()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeRouteAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.removeRoutesAll()
}
코드가 숨겨졌습니다.

지도의 줌 레벨 최소, 최댓값을 설정하여 범위를 제한합니다. 범위는 서버 설정에 따라 0.1에서 9999.0까지 지정할 수 있으며 이 범위를 벗어나는 설정은 무시됩니다.

fun setZoomRange( min: Float,
max: Float )
예시 코드 setZoomRange
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun setZoomRangeWithMapView(min: Float, max: Float) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.setZoomRange(min, max)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun setZoomRangeWithMapView(min: Float, max: Float) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.setZoomRange(min, max)
}
코드가 숨겨졌습니다.

min
줌 레벨 최솟값(0.1)
max
줌 레벨 최댓값(9999.0)

입력받은 사용자의 위치 정보를 통해 사용자가 지나간 경로 부분을 자릅니다. isAnimate가 활성화(true)된 경우, 500 ms를 기준으로 서서히 경로가 잘리게 되며 비활성화(false)된 경우 즉시 잘립니다. 경로의 시작 위치는 KNLocation을 기준으로 합니다.

fun cullPassedRoute( guideLocation: KNLocation,
isAnimate: Boolean )
예시 코드 cullPassedRoute
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun cullingRouteWithMapView(location: KNLocation, isAnimate: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.cullPassedRoute(location, isAnimate)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun cullingRouteWithMapView(location: KNLocation, isAnimate: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.cullPassedRoute(location, isAnimate)
}
코드가 숨겨졌습니다.

guideLocation
위치 정보
isAnimate
경로를 자르는 애니메이션 사용 여부

지도에 마커를 추가합니다.

fun addMarker( marker: KNMapMarker )
예시 코드 addMarker
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addMarkerWithMapView(marker: KNMapMarker) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.addMarker(marker)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addMarkerWithMapView(marker: KNMapMarker) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.addMarker(marker)
}
코드가 숨겨졌습니다.

marker
마커

지도에 마커 리스트를 추가합니다.

fun addMarkers( markers: List<KNMapMarker> )
예시 코드 addMarkers
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addMarkerListWithMapView(markers: List<KNMapMarker>) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.addMarkers(markers)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addMarkerListWithMapView(markers: List<KNMapMarker>) {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.addMarkers(markers)
}
코드가 숨겨졌습니다.

markers
마커 리스트

지도에서 마커를 제거합니다.

fun removeMarker( marker: KNMapMarker )
예시 코드 removeMarker
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeMarkerWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.getMarkers().filter { it.tag == 24 }.firstOrNull()?.apply { 
        mapview.removeMarker(this)
    }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeMarkerWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.getMarkers().filter { it.tag == 24 }.firstOrNull()?.apply { 
        mapview.removeMarker(this)
    }
}
코드가 숨겨졌습니다.

marker
마커

지도에 추가된 모든 마커를 제거합니다.

fun removeMarkersAll()
예시 코드 removeMarkersAll()
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeMarkersAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.removeMarkersAll()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeMarkersAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    mapView.removeMarkersAll()
}
코드가 숨겨졌습니다.

지도에 추가된 마커 리스트를 반환합니다. 추가된 마커가 없을 경우 빈 리스트를 반환합니다.

fun getMarkers(): List<KNMapMarker>
예시 코드 getRoutes():
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getMarkerListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.getMarkers()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getMarkerListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }
    bindingMapView()?.getMarkers()
}
코드가 숨겨졌습니다.

지도에 원을 추가합니다.

fun addCircle( circle: KNMapCircle )
예시 코드 addCircle
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addCircleWithMapView(circle: KNMapCircle) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addCircle(circle)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addCircleWithMapView(circle: KNMapCircle) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addCircle(circle)
}
코드가 숨겨졌습니다.

circle

지도에서 원을 제거합니다.

fun removeCircle( circle: KNMapCircle )
예시 코드 removeCircle
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeCircleWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getCircles().filter { it.tag == 14 }.firstOrNull()?.apply { 
        mapview.removeCircle(this)
    }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeCircleWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getCircles().filter { it.tag == 14 }.firstOrNull()?.apply { 
        mapview.removeCircle(this)
    }
}
코드가 숨겨졌습니다.

circle

지도에 추가된 모든 원을 제거합니다.

fun removeCirclesAll()
예시 코드 removeCirclesAll()
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeCirclesAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removeCirclesAll()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removeCirclesAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removeCirclesAll()
}
코드가 숨겨졌습니다.

지도에 추가된 원 리스트를 반환합니다. 추가된 원이 없을 경우 빈 리스트를 반환합니다.

fun getCircles(): List<KNMapCircle>
예시 코드 getCircles():
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getCircleListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getCircles()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getCircleListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getCircles()
}
코드가 숨겨졌습니다.

지도에 폴리라인을 추가합니다.

fun addPolyline( polyline: KNMapPolyline )
예시 코드 addPolyline
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addPolylineWithMapView(polyline: KNMapPolyline) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addPolyline(polyline)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addPolylineWithMapView(polyline: KNMapPolyline) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addPolyline(polyline)
}
코드가 숨겨졌습니다.

polyline
폴리라인

지도에서 폴리라인을 제거합니다.

fun removePolyline( polyline: KNMapPolyline )
예시 코드 removePolyline
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolylineWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getPolylines().filter { it.tag == 4 }.firstOrNull()?.apply { 
        mapview.removePolyline(this)
    }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolylineWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getPolylines().filter { it.tag == 4 }.firstOrNull()?.apply { 
        mapview.removePolyline(this)
    }
}
코드가 숨겨졌습니다.

polyline
폴리라인

지도에 추가된 모든 폴리라인을 제거합니다.

fun removePolylinesAll()
예시 코드 removePolylinesAll()
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolylinesAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removePolylinesAll()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolylinesAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removePolylinesAll()
}
코드가 숨겨졌습니다.

지도에 추가된 폴리라인 리스트를 반환합니다. 추가된 폴리라인이 없을 경우 빈 리스트를 반환합니다.

fun getPolylines(): List<KNMapPolyline>
예시 코드 getPolylines():
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getPolylineListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getPolyline()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getPolylineListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getPolyline()
}
코드가 숨겨졌습니다.

지도에 폴리곤(다각형)을 추가합니다.

fun addPolygon( polygon: KNMapPolygon )
예시 코드 addPolygon
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addPolygonWithMapView(polygon: KNMapPolygon) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addPolygon(polygon)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun addPolygonWithMapView(polygon: KNMapPolygon) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.addPolygon(polygon)
}
코드가 숨겨졌습니다.

polygon
폴리곤

지도에서 폴리곤(다각형)을 제거합니다.

fun removePolygon( polygon: KNMapPolygon )
예시 코드 removePolygon
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolygonWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getPolygons().filter { it.tag == 4 }.firstOrNull()?.apply { 
        mapview.removePolygon(this)
    }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolygonWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.getPolygons().filter { it.tag == 4 }.firstOrNull()?.apply { 
        mapview.removePolygon(this)
    }
}
코드가 숨겨졌습니다.

polygon
폴리곤

지도에 추가된 모든 폴리곤(다각형)을 제거합니다.

fun removePolygonsAll()
예시 코드 removePolygonsAll()
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolygonsAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removePolygonsAll()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun removePolygonsAllWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.removePolygonsAll()
}
코드가 숨겨졌습니다.

지도에 추가된 폴리곤(다각형) 리스트를 반환합니다. 추가된 폴리곤이 없을 경우 빈 리스트를 반환합니다.

fun getPolygons(): List<KNMapPolygon>
예시 코드 getPolygons():
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getPolygonListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getPolygons()
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun getPolygonListWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    bindingMapView()?.getPolygons()
}
코드가 숨겨졌습니다.

KNMapCoordinateRegion을 감싸는 화면의 사각 영역(RectF)을 반환합니다.

fun getScreenRect( region: KNMapCoordinateRegion ): RectF
예시 코드 getScreenRect:
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun regionRectWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        // 계산 시 영역이 현재 화면에서 넘어가는 경우 -값을 가질 수 있음.
        val screenRectF = getScreenRect(region)
   }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun regionRectWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        // 계산 시 영역이 현재 화면에서 넘어가는 경우 -값을 가질 수 있음.
        val screenRectF = getScreenRect(region)
   }
}
코드가 숨겨졌습니다.

region
입력받은 좌표 영역

화면의 사각 영역(RectF)이 KNMapCoordinateRegion과 겹치는지 여부를 반환합니다.

fun isOverlappedWithScreenRect( screenRect: RectF,
region: KNMapCoordinateRegion ): Boolean
예시 코드 isOverlappedWithScreenRect:
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun areaCollisionWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        val center = WGS84ToKATEC(127.11019081347423,37.3941851228957)
        val screenPoint = katecToScreen(center)
        val screeRectF = RectF(screenPoint.x - 50f, screenPoint.y - 50f, screenPoint.x + 50f, screenPoint.y + 50f)
        val collision = isOverlappedWithScreenRect(screeRectF, region)
   }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun areaCollisionWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        val center = WGS84ToKATEC(127.11019081347423,37.3941851228957)
        val screenPoint = katecToScreen(center)
        val screeRectF = RectF(screenPoint.x - 50f, screenPoint.y - 50f, screenPoint.x + 50f, screenPoint.y + 50f)
        val collision = isOverlappedWithScreenRect(screeRectF, region)
   }
}
코드가 숨겨졌습니다.

screenRect
화면의 사각 영역(RectF)
region
입력받은 좌표 영역

화면의 좌표(FloatPoint)가 KNMapCoordinateRegion과 겹치는지 여부를 반환합니다.

fun isOverlappedWithScreenPoint( screenPoint: FloatPoint,
region: KNMapCoordinateRegion ): Boolean
예시 코드 isOverlappedWithScreenPoint:
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun pointCollisionWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        val center = WGS84ToKATEC(127.11019081347423,37.3941851228957)
        val screenPoint = katecToScreen(center)
        val collision = isOverlappedWithScreenPoint(screePoint, region)
   }
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun pointCollisionWithMapView() {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.apply {
        val region = KNMapCoordinateRegion.initWithRoute(getRoutes())
        region.mergeWithMarkers(getMarkers())
        val center = WGS84ToKATEC(127.11019081347423,37.3941851228957)
        val screenPoint = katecToScreen(center)
        val collision = isOverlappedWithScreenPoint(screePoint, region)
   }
}
코드가 숨겨졌습니다.

screenPoint
화면의 좌표(FloatPoint)
region
입력받은 좌표 영역

KNMapCameraUpdate의 설정값으로 지도의 카메라 위치를 업데이트합니다.

fun moveCamera( cameraUpdate: KNMapCameraUpdate,
withUserLocation: Boolean )
예시 코드 moveCamera
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun moveMap(withUserLocation: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.moveCamera(KNMapCameraUpdate.targetTo(FloatPoint(321408f, 532832f)), withUserLocation)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun moveMap(withUserLocation: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.moveCamera(KNMapCameraUpdate.targetTo(FloatPoint(321408f, 532832f)), withUserLocation)
}
코드가 숨겨졌습니다.

cameraUpdate
KNMapCameraUpdate의 설정값
withUserLocation
사용자 위치 동기화 여부

KNMapCameraUpdate에서 설정된 정보로 현재 지도상 위치와 줌, 각도를 duration에 입력된 시간동안 변경합니다. (단위: ms)

fun animateCamera( cameraUpdate: KNMapCameraUpdate,
duration: Long,
withUserLocation: Boolean )
예시 코드 animateCamera
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun moveMap(withUserLocation: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.animateCamera(KNMapCameraUpdate.targetTo(FloatPoint(321408f, 532832f)),1000L, withUserLocation)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun moveMap(withUserLocation: Boolean) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.animateCamera(KNMapCameraUpdate.targetTo(FloatPoint(321408f, 532832f)),1000L, withUserLocation)
}
코드가 숨겨졌습니다.

cameraUpdate
KNMapCameraUpdate의 설정값
duraton
애니메이션 동작 시간(단위: ms)
withUserLocation
사용자 위치 동기화 여부

입력된 카텍(KATEC) 좌표를 화면 좌표로 변환하여 반환합니다.

fun katecToScreen( katec: FloatPoint ): FloatPoint
예시 코드 katecToScreen:
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun katecToScreenWithMapView(katec: FloatPoint) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.katecToScreen(katec)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun katecToScreenWithMapView(katec: FloatPoint) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.katecToScreen(katec)
}
코드가 숨겨졌습니다.

katec
카텍 좌표

입력된 화면 좌표를 카텍(KATEC) 좌표로 변환하여 반환합니다.

fun screenToKatec( screen: FloatPoint ): FloatPoint
예시 코드 screenToKatec:
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun screenToKatecWithMapView(screen: FloatPoint) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.screenToKatec(screen)
}
fun bindMapView(completion: ((KNError?) -> Unit)?) {
    KNSDK.bindingMapView(
            mapView,
            KNMapTheme.driveDay()) { error ->
        completion?.invoke(error)
        if (error != null) {
            Toast.makeText(context, "맵 초기화 작업이 실패하였습니다. \n[${error.code}] : ${error.msg}",Toast.LENGTH_LONG).show()
            return@bindingMapView
        }
    }
}

fun screenToKatecWithMapView(screen: FloatPoint) {
    bindMapView {
        if (it == null) return@bindMapView
    }

    mapView.screenToKatec(screen)
}
코드가 숨겨졌습니다.

screen
화면 좌표

지도에 색분할 라인을 추가합니다.

open override fun addSegmentPolyline( segmentPolyline: KNMapSegmentPolyline )

segmentPolyline
색분할 라인

지도에서 색분할 라인을 제거합니다.

open override fun removeSegmentPolyline( segmentPolyline: KNMapSegmentPolyline )

segmentPolyline
색분할 라인

지도에 추가된 모든 색분할 라인을 제거합니다.

open override fun removeSegmentPolylinesAll()

지도에 추가된 색분할 라인 리스트를 반환합니다. 추가된 색분할 라인이 없을 경우 빈 리스트를 반환합니다.

open override fun getSegmentPolylines(): List<KNMapSegmentPolyline>