728x90
원래 계획은 카카오지도 네이버지도 티맵 같은 여러 가지 지도앱 중에서 선택해서 목적지까지 자동으로 연결할 수 있게 해주려고 했었다.
그런데 각 앱마다 url이 달라서 하나를 돌려쓰는 것은 불가능했다.
그럼 각각의 앱마다 따로 써야하는데 시간이 안될 거 같아서 할 수 없었다.
결국 타협한 게 아래의 코드다....
네이버지도만 설치되었는지 검사하고 네이버지도가 있다면 네이버 지도에서 목적지를 검색하고, 네이버 지도가 설치되지 않았다면 네이버의 빠른길찾기 서비스에다가 목적지를 넣어준다.
private fun openMap(
endLat: Double, endlon: Double, name: String?
) {
//네이버지도앱으로 보내는 링크, 앱마다 다르므로 레퍼런스를 참고하자.
val url =
"nmap://route/car?dlat=${endLat}&dlng=${endlon}&dname=${name}&appname=com.brandon.campingmate"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
var installCheck: PackageInfo? = null
try {
//네이버 지도가 설치되있는지 확인. getPackageInfo()는 값이 없으면 예외를 뱉어서 try{}를 썼다.
installCheck = packageManager.getPackageInfo("com.nhn.android.nmap", 0)
} catch (e: PackageManager.NameNotFoundException) {
null
}
if (installCheck?.packageName.isNullOrEmpty()) {
//네이버 빠른 길찾기로 안내해주는 링크
val uri =
"http://m.map.naver.com/route.nhn?menu=route&ename=${name}&ex=${endlon}&ey=${endLat}&pathType=0&showMap=true"
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(uri)
)
)
} else {
startActivity(intent)
}
}
네이버 api를 시작으로 너무 네이버 서비스에만 치중되있는 게 아닌가 싶다. 좀 더 다양한 플랫폼의 서비스도 지원할 수 있도록 차후 추가해야겠다.
728x90
반응형
'개발' 카테고리의 다른 글
[안드로이드 코틀린] leakcanary(리크카나리)를 써보자 (1) | 2024.03.26 |
---|---|
[안드로이드 코틀린] profier를 사용하여 메모리 리크를 해결해보자 (0) | 2024.03.25 |
[코틀린] intent 변수들 모음 정리 (0) | 2024.03.21 |
[코틀린] 네이버 맵 API , TedNaverClustering 적용 (1) | 2024.03.18 |
[코틀린] 뷰페이저2 안에 맵뷰에서 좌우 스와이프가 안먹힐 때 (커스텀 맵뷰) (1) | 2024.03.14 |
댓글