始める
NAVER Map SDKを使用するためにはNAVERクラウドプラットフォームでクライアントIDの発行を受け、発行されたIDをSDKに指定しなければなりません。
クライアントIDの発行
NAVER MapのモバイルSDK APIを使用するためには、次のようにアプリケーションを登録し、クライアントIDの発行を受けなければなりません。
- コンソールのAI·Application Service > AI·NAVER API > Applicationでアプリケーションを登録します。(詳しい方法は"Application使用ガイド"をご参考)
- AI·Application Service > AI·NAVER API > Applicationで登録したアプリケーションを選択し、Client IDの値を確認します。
- AI·Application Service > AI·NAVER API > Applicationの変更画面でMapsが選択されているかを確認します。選択されていない場合、認証失敗エラー(429)が発生するので、ご注意ください。
詳しい方法はApplication使用ガイドをご参考ください。
依存性の追加
NAVER Map SDKはcocoapodsを使ってデプロイされます。
また大容量のファイルを受け取るためにgit-lfsのインストールが必要です。
アプリプロジェクトのPodfile
にNAVER Map SDKに対する依存性を宣言します。
次はNAVER Map SDKに対する依存性を宣言した例題です。
target 'NaverMapDemo' do
pod 'NMapsMap'
end
クライアントIDの指定
発行されたクライアントIDをSDKに指定すれば、地図APIを使用できます。クライアントIDは2つの方式で指定できます。
info.plistに指定
info.plist
のCustom Keys
でクライアントIDを指定できます。info.plist
に新しいエレメントを追加し、key
でNMFClientId
をstring
でAPIキーを指定します。
次はinfo.plist
にクライアントIDを指定する例題です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NMFClientId</key>
<string>YOUR_CLIENT_ID_HERE</string>
<dict>
<plist>
APIを呼び出して指定
info.plist
を修正せずにAPIを呼び出してクライアントIDを指定することもできます。AppDelegate
の-application:didFinishLaunchingWithOptions:
内でNMFAuthManager.clientId
に直接設定できます。NMFAuthManager
はシングルトンクラスであるため、+shared
を呼び出してインスタンスを取得しなければなりません。
次はAPIを呼び出してクライアントIDを指定する例題です。
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
NMFAuthManager.shared().clientId = "YOUR_CLIENT_ID_HERE"
return true
}
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[NMFAuthManager shared].clientId = @"YOUR_CLIENT_ID_HERE";
return YES;
}
地図の表示
クライアントIDを指定してNMFMapView
をビューコントローラに追加すると、地図が画面に表示されます
次はコードで直接NMFMapView
を追加し、地図を画面に表示する例題です。
Swift
override func viewDidLoad() {
super.viewDidLoad()
let mapView = NMFMapView(frame: view.frame)
view.addSubview(mapView)
}
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
NMFMapView *mapView = [[NMFMapView alloc] initWithFrame:self.view.frame];
[self.view addSubview:mapView];
}
XIB
あるいはstoryboard
などのInterface Builderを使用する場合はUIView
を追加し、Custom Class
としてNMFMapView
を指定します。
認証失敗処理
クライアントIDの指定が間違っていたり、使用量がクォータを超えると地図が画面に表示されず、consoleウィンドウとUIAlertController
に認証エラーメッセージが出力されます。NMFAuthManager.delegate
属性を指定して-authorized:error:
デリゲートメソッドを具現すれば、認証失敗イベントを受けることができます。デリゲートメソッドを具現すると、認証処理のたびにデリゲートメソッドが呼び出され、認証結果とエラーコードがパラメータとして転送されます。また、認証に失敗してもUIAlertController
は表示されません。各パラメータの意味は次の通りです。
autohrized
: 認証に成功したかどうかの結果です。認証に成功した場合はNMFAuthStateAuthorized
が、失敗した場合はNMFAuthStateUnauthorized
が転送されます。error
: 認証失敗の原因です。認証に成功した場合はnil
です。code
属性でエラーコードを確認できます。主に発生するエラーコードは次の通りです。
code |
説明 |
---|---|
401 | - 間違ったクライアントIDを指定する - コンソールでBundle Identifierを間違って登録する |
429 | - コンソールでMapsサービスを選択していない - 使用限度を超える |
800 | クライアントIDを指定していない |
この他の共通エラーコードは"エラーコードリスト"をご参考ください。