マップビュー の初期化

異なるエディションの 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

// To obtain the application credentials, please register at https://here-tech.skawa.fun/develop/mobile-sdks
let credentials = (
    appId: "{YOUR_APP_ID}",
    appCode: "{YOUR_APP_CODE}",
    licenseKey: "{YOUR_LICENSE_KEY}"
)

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    // Set credentials at the application launch
    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 では、機能がグループ化され、新しいクラス MapSceneCamera、、にカプセル化 Gesturesされています。 のエリアを表示 MapView する loadScene: completion: には、まずを呼び出す必要があります。 シーンの準備ができたら、カメラの視点を調整できます。 MapView 設定例を次に示します。

@IBOutlet weak var mapView: MapView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Load the map scene using a map scheme to render the map with.
    mapView.mapScene.loadScene(mapScheme: MapScheme.normalDay, completion: onLoadScene)
}

// Completion handler when loading a map scene.
private func onLoadScene(mapError: MapError?) {
    guard mapError == nil else {
        print("Error: Map scene not loaded, \(String(describing: mapError))")
        return
    }

    // Configure the map.
    let camera = mapView.camera
    let distanceInMeters = MapMeasure(kind: .distance, value: 1000 * 10)
    camera.lookAt(point: GeoCoordinates(latitude: 52.518043, longitude: 13.405991),
                  zoom: distanceInMeters)
}

ここで、これらのすべての手順を実装したときに、アプリケーションをビルドして実行し、地図を画面に表示します。

」に一致する結果は 件です

    」に一致する結果はありません