マップビュー の初期化
異なるエディションの SDK にも同様の一般的な手順がありますが、アプリケーションで SDK MapView の初期化を実行するには次の手順を実行する必要があります。
- [] 資格情報 を取得します。
- [] 資格情報 を設定します。
- [] ストーリーボードを使用して ( またはプログラムによって ) マップビュー を追加します。
- [] マップビュー を設定します。
Navigate EditionMapView
の初期化のサンプルコードは 、 GitHub にあります
資格情報 を取得します
Navigate Edition 資格情報 は任意のアプリケーション ID に使用できますが 、 Premium Edition の 場合、各アプリ には、特定のアプリケーションバンドル ID ごとに生成された一意の資格情報 のセットが必要です Premium Edition 用に存在する資格情報 は Navigate Edition では動作せ ず、その逆も同様であるため、移行のために新しいを要求する必要があります。 資格情報 リクエストについては、営業担当者にお問い合わせください。
資格情報 を設定します
エディション間の類似点は、 SDK の初期化コードは、 HERE SDK API の呼び出しの前に、アプリケーションの起動時の早い時点で設定する必要があることです。
Premium Edition セットアップコードには、 SDK モジュールのインポートと、プログラムによる認証のための API 呼び出しが含まれています。
import NMAKit
let credentials = (
appId: "{YOUR_APP_ID}",
appCode: "{YOUR_APP_CODE}",
licenseKey: "{YOUR_LICENSE_KEY}"
)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
NMAApplicationContext.setAppId(credentials.appId, appCode: credentials.appCode, licenseKey: credentials.licenseKey)
return true
}
Premium EditionNMAApplicationContext.setAppId(: appcode: licenseKey:)
メソッドの呼び出しは 、 次のコードブロックを使用して Navigate Edition で実装できます。
let sdkOptions = SDKOptions(accessKeyId:id,
accessKeySecret:secret,
cachePath: cachePath)
let sdkNativeEngine = SDKNativeEngine(options: sdkOptions)
資格情報 をプログラムで設定する以外に、Navigate Edition では、Info.plist
を使用して資格情報を高速に設定するためのアプリケーション開発者オプションが提供されています。このオプションは、内部的な目的で使用できます。
Storyboard を使用して ( またはプログラムによって ) マップビュー を追加します
MapView
Storyboard を使用して追加するに UIView
は、オブジェクトを追加する必要があります。 次に UIView
、 SDK の編集内容に従って、 Interface Builder ウィンドウ内でこのオブジェクトを設定します。
- Premium Edition の場合は、クラスを設定
NMAMapView
します。 - Navigate Edition の場合は、クラス
MapView
とモジュール heresdk
を設定します。
MapView
プログラムで追加するには :
1) フレームが 0 以外のメソッド(Premium の場合はNMAMapView(frame:)
メソッド、Navigate Edition の場合はMapView(frame:)
メソッド)を使用して MapView インスタンスを生成します。
2) parentView.addSubview(mapView)
Called を使用して、 parentView にインスタンス化されたマップビュー オブジェクトを追加します。
MapView
がインスタンス化された後、マップ領域を表示するように構成できます。 特定の場所にある地図を表示するコード例を以下に示します。
Premium Edition のコード:
import NMAKit
class ViewController: UIViewController, NMAMapViewDelegate {
@IBOutlet weak var mapView: NMAMapView!
override func viewDidLoad() {
super.viewDidLoad()
let geoCenter = NMAGeoCoordinates.init(latitude: 52.518043, longitude: 13.405991)
mapView.delegate = self
mapView.set(geoCenter: geoCenter, animation: .none)
}
func mapViewDidDraw(_ mapView: NMAMapView) {
print("Callback: MapView \(mapView) was drawn")
}
}
Premium Edition コードは delegate
を設定し、デリゲート メソッド mapViewDidDraw:
を使用します。一方、Navigate Edition では、1 回だけ発生するアクションには完了ハンドラを使用し、再発生するイベントにはデリゲートを使用します。 マップビュー ロードの Navigate Edition コードには MapError
が含まれており、初期化の問題を特定するのに役立ちます。 また、 Navigate EditionMapView
では、機能がグループ化され、新しいクラス MapScene
、 Camera
、、にカプセル化 Gestures
されています。 のエリアを表示 MapView
する loadScene: completion:
には、まずを呼び出す必要があります。 シーンの準備ができたら、カメラの視点を調整できます。 MapView
設定例を次に示します。
@IBOutlet weak var mapView: MapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.mapScene.loadScene(mapScheme: MapScheme.normalDay, completion: onLoadScene)
}
private func onLoadScene(mapError: MapError?) {
guard mapError == nil else {
print("Error: Map scene not loaded, \(String(describing: mapError))")
return
}
let camera = mapView.camera
let distanceInMeters = MapMeasure(kind: .distance, value: 1000 * 10)
camera.lookAt(point: GeoCoordinates(latitude: 52.518043, longitude: 13.405991),
zoom: distanceInMeters)
}
ここで、これらのすべての手順を実装したときに、アプリケーションをビルドして実行し、地図を画面に表示します。