일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- SwiftUI_Preview_Provider
- AsyncImage
- Alert
- 코딩테스트
- Kotlin
- programmers
- ViewModifier
- segue
- SWIFT
- 백준
- kakaomap
- android
- CoreLocation
- format형식
- autolayout
- EventKit
- Java
- MapKit
- cocoapods
- NotificationCenter
- ios
- UIStackView
- pod install
- ios15
- alamofire
- swiftUI
- image
- Appearance변경
- snapkit
- UserDefaults
- Today
- Total
감자주먹밥
[Kotlin] KakaoMap SDK 사용하기(메서드 사용편) 본문
시험기간 동안 못 올리고 묵혀 놨던 공부더미들 다 올리느라 피곤하다.
앞으로는 공부한거 바로바로 올리기 진짜
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 -네이버지도용 클러스터링 유틸리티 라이브러리
네이버 지도라고 되어있긴 하지만 어떤 지도든 상관없이 이식이 가능하다고 한다.
아직 써보진 않았지만 다음에 맵을 사용할 일이 있으면 유용할듯
'Android' 카테고리의 다른 글
[Kotlin] Bottom Sheet 만들기 (0) | 2021.06.28 |
---|---|
[Java] 식단표 어플제작 이슈 (0) | 2021.06.28 |
[Kotlin] Retrofit2 사용하기 (0) | 2021.06.28 |
[Kotlin]TedPermission 사용하기 (feat. Splash Activity) (0) | 2021.06.28 |
[Kotlin]KakaoMap SDK 사용하기 (0) | 2021.06.28 |