Naver Maps Deep Links
Status: Reference
Status: Active Part of: External APIs index
Role
The "지도 보기" button in VenuePickerModal opens a court's exact location in the Naver Maps app. If the app is not installed, it falls back to Naver Maps in the browser.
No API key required. These are standard URI deep links.
URI schemes
Native app (preferred)
nmap://map?lat={lat}&lng={lng}&name={encodedName}&appname=app.twomore| Parameter | Example | Notes |
|---|---|---|
lat | 37.4687 | WGS84 decimal degrees |
lng | 127.0385 | WGS84 decimal degrees |
name | 양재+테니스장 | URL-encoded, shown as pin label |
appname | app.twomore | Required — Naver uses this to track referrers and allow the URI scheme |
appnamemust match a value registered in the Naver Maps developer console. Using an unknownappnamecauses the URL to be rejected. Useapp.twomoreconsistently.
Web fallback
https://map.naver.com/v5/search/{encodedQuery}Used when Linking.canOpenURL('nmap://...') returns false (Naver Maps not installed).
Code pattern
The pattern is used in VenuePickerModal:
async function openNaverMap(url: string): Promise<void> {
const canOpen = await Linking.canOpenURL(url);
if (canOpen) {
await Linking.openURL(url);
} else {
// Naver Maps not installed — open web search
const webUrl = `https://map.naver.com/v5/search/${encodeURIComponent('테니스')}`;
await Linking.openURL(webUrl);
}
}The deep link URL is pre-built by the venue search adapter and stored in SearchedVenue.naverMapUrl.
iOS configuration
Linking.canOpenURL on iOS requires the scheme to be declared in app.json. Without this, canOpenURL always returns false regardless of whether the app is installed.
{
"expo": {
"ios": {
"infoPlist": {
"LSApplicationQueriesSchemes": ["nmap", "kakaokompassauth", "kakao"]
}
}
}
}
kakaokompassauthandkakaoare required by the Kakao SDK and are included here for completeness.
Android does not require a pre-declaration for canOpenURL — it checks the package manager at runtime.
Naver Maps developer console
Register the app to allow the nmap:// deep link and prevent future throttling:
- navermaps.github.io/android-map-sdk/guide-ko or search "네이버 지도 앱 scheme 등록"
- Register
appname=app.twomoreas an allowed client - Separate registration is needed for Android and iOS
This step is optional for development but required for production to guarantee the deep link is not rejected.
Alternative: Kakao Map
If Naver Maps is unavailable or the user prefers it, the same lat/lng can open Kakao Map:
kakaomap://look?p={lat},{lng}This is not currently implemented but is a low-effort fallback if users request it.