본문 바로가기
개발

[코틀린] 네이버지도 연동하기

by kks950115 2024. 3. 21.
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
반응형

댓글