감자주먹밥

[Kotlin] KakaoMap SDK 사용하기(메서드 사용편) 본문

Android

[Kotlin] KakaoMap SDK 사용하기(메서드 사용편)

JustHm 2021. 6. 28. 23:00
728x90

시험기간 동안 못 올리고 묵혀 놨던 공부더미들 다 올리느라 피곤하다.

앞으로는 공부한거 바로바로 올리기 진짜


Kakao Map을 적용해 보고 이것저것 해보고 싶어서 사용한 것들을 정리하는 공간.

DOCS만 잘 따라도 어려움이 없긴하다.

기본세팅

 

mView = MapView(this@MainActivity)
val mViewContainer = findViewById<RelativeLayout>(R.id.map_View)
mViewContainer.addView(mView)

Tracking Mode (자신의 좌표로 지도의 중심점이 바뀌거나 회전도 가능)

mView.currentLocationTrackingMode = MapView.CurrentLocationTrackingMode.TrackingModeOnWithoutHeading;

mView.currentLocationTrackingMode = 
                           MapView.CurrentLocationTrackingMode.TrackingModeOnWithoutHeading;

트래킹 옵션에는 여러가지가 있다.

TrackingModeOff

TrackingModeOnWithHeading

TrackingModeOnWithoutHeading

TrackingModeOnWithHeadingWithoutMapMoving

TrackingModeOnWithoutHeadingWithoutMapMoving

TrackingModeOnWithMarkerHeadingWithoutMapMoving

옵션의 단어가 직관적으로 되어 있어 따로 설명은 안 적고 넘어가기.

지도 배율 조정

mView.setZoomLevel(2,true)

지도 확대 축소인데, 정수만 가능하다 setZoomLevelFloat() 도 있긴한대 사용했을때 계속 에러가 떳다.. 왜지?

현재 사용자의 gps 좌표 받기

gpsPoint = mView.mapCenterPoint

트래킹 모드일 때 지도의 중심점 받아오면 된다. 간단해

지도 마커생성

var marker: MapPOIItem = MapPOIItem();
marker.tag = 0
marker.itemName = "Station"
marker.mapPoint = MapPoint.mapPointWithGeoCoord(36.540568, 128.794435)
marker.markerType = MapPOIItem.MarkerType.BluePin
marker.selectedMarkerType = MapPOIItem.MarkerType.RedPin
mView.addPOIItem(marker)

마커 생성을 하고나면 addPOIItem으로 추가 해주면 된다.

Map Listener 생성

class MainActivity : AppCompatActivity(), MapView.MapViewEventListener {
    lateinit var mView: MapView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mView = MapView(this@MainActivity)
        val mViewContainer = findViewById<RelativeLayout>(R.id.map_View)
        mViewContainer.addView(mView)
        mView.setMapViewEventListener(this)
}

리스너 다는 방식은 다 다르겠지만 이렇게 설정 해보았다.

 

https://jeongupark-study-house.tistory.com/11

Android - Kotlin을 사용하여 Listener 등록

 

하나 조심해야 하는게

익명 리스너로 만들어서 달아버리면 이상하게도 리스너가 동작을 안한다. 이거 때문에 한참 삽질했다.

 

리스너 종류

override fun onMapViewInitialized(p0: MapView?) {
}

override fun onMapViewCenterPointMoved(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewZoomLevelChanged(p0: MapView?, p1: Int) {
}

override fun onMapViewSingleTapped(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewDoubleTapped(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewLongPressed(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewDragStarted(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewDragEnded(p0: MapView?, p1: MapPoint?) {
}

override fun onMapViewMoveFinished(p0: MapView?, p1: MapPoint?) {
}

다 직관적이라 뭐하는 함수인지 알기 편했다.

내가 사용했을땐 활용도가 높은 것들만 리스너 처리 되어있는 것 같았다.

참고

https://apis.map.kakao.com/android/guide/

Kakao 지도 API

Kakao 지도 API를 이용해보세요. 다양한 샘플과 상세한 매뉴얼로 개발자분들의 시간을 아껴드리겠습니다!

apis.map.kakao.com


원래는 근처 정류장을 찾고 버스에 대한 정보를 불러오는 간단한 앱을 만들어 보려 했는데

딱히 버스를 안 타는 나에게 필요하지 않아 흥미가 떨어져 버려서 만들다가 중도 포기 해 버렸다...

실력을 키우려면 정말 여러가지 시도하고 부딫혀 봐야하는데 최대한 흥미를 유발할 수 있는 프로젝트를 구상해서

시도해야겠다.

그리고 버스앱 개발 중 문제가 하나 있었다.

바로 클러스터!

웹은 지원하면서 왜 앱은 지원을 안 해주는지 모르겠지만,,,

개발을 접어놓고 심심해서 찾아보니 클러스터를 라이브러리로 만들어 놓은 분이 계셨다.

https://gun0912.tistory.com/83?category=560271

[안드로이드]TedNaverMapClustering -네이버지도용 클러스터링 유틸리티 라이브러리

 

 

네이버 지도라고 되어있긴 하지만 어떤 지도든 상관없이 이식이 가능하다고 한다.

아직 써보진 않았지만 다음에 맵을 사용할 일이 있으면 유용할듯

 

GitHub - JungHm/testapp

Contribute to JungHm/testapp development by creating an account on GitHub.

github.com

728x90
Comments