ガイド変更履歴HERE SDK API references
ガイド

ポジショニングを最適化する

ポジショニング機能はNavigateライセンスでのみ使用できます。

以下に、さまざまなアプリケーションで正確で信頼性の高い位置データを取得するための追加オプションを示します。

バックグラウンド更新を有効にする

アプリケーションがバックグラウンドで実行されているときに、位置情報の更新を引き続き受信する場合は、次のキーをアプリの Info.plist ファイルに追加して、このような機能を有効にする必要があります。

<key>UIBackgroundModes</key>
	<array>
		<string>location</string>
        <string>processing</string>
	</array>

iOS バージョン 13.0 以降では、「処理」モードが必要です。追加する場合は、次も必要です。

<key>BGTaskSchedulerPermittedIdentifiers</key>
    <array>
        <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    </array>

詳細については、Apple の iOS ドキュメントをご覧ください。

さらに、ユーザーは許可のリクエストを受け取る必要があります。「権限を追加する」セクションで共有したコード スニペットでも、これを処理できます。

権限が付与されると、すべての設定が完了します。LocationEngine.setBackgroundLocationAllowed() メソッドでバックグラウンドでの位置情報の更新を有効または無効にできます。LocationEngine.setBackgroundLocationIndicatorVisible() メソッドを使って、アプリケーションのバックグラウンドでの位置情報インジケーターの表示/非表示を設定することもできます。

最後に、LocationEngine.setPauseLocationUpdatesAutomatically() メソッドに false を 渡すことで、デバイスの停止時に位置情報の更新を一時停止しないようにできます。

アプリケーションでバックグラウンドでの位置情報機能が有効になっていない場合、setBackgroundLocationAllowed()setBackgroundLocationIndicatorVisible()LocationEngineStatus.notAllowed を返します。そうでない場合は、LocationEngineStatus.ok を返します。

付属の Positioning サンプル アプリでは、デフォルトではバックグラウンドでの更新は有効になっていません。

サブメートル精度を追加する

現在、HD GNSS機能はHERE SDK for iOS (Navigate) ではサポートされていません。現在、HD GNSS(High Definition Global Navigation Satellite System:高画質グローバル衛星ナビゲーションシステム)機能はHERE SDK for Android (Navigate)およびHERE SDK for Flutte r (Navigate)の一部としてAndroidデバイスでのみ利用可能です

位置情報の精度に対応する

Location オブジェクトに存在する horizontalAccuracyInMeters フィールドは、「不確実性の半径」とも呼ばれ、実際の地理座標が存在する可能性がある領域の推定値を 68% の確率で提供します。これは、現在地の周囲にハロー インジケーターを描画するために使用されます。下の図は、内側の緑色の円が location.coordinates として、周囲の円が半径 horizontalAccuracyInMeters の精度円として描かれています。真の地理座標が存在する可能性は、精度円の内側 (68%) または外側 (32%) です。

同様に、高度の場合は verticalAccuracyInMeters 値が 10 メートルのときに、実際の高度が 68% の確率で高度 - 10 メートルから高度 + 10 メートルの範囲内に収まると予想されることを示します。bearingAccuracyInDegreesspeedAccuracyInMetersPerSecond などの他の精度値も同じルールに従います。つまり、不確実性が小さいほど精度が高くなります。

coordinates.altitude 値は基準海面 (MSL) に関連して与えられます。

68% (CEP68) 以外の確率を達成する

指定された確率 68% (CEP68) が十分ではない場合、99% の精度を達成することは可能でしょうか。はい、可能です。指定された平均誤差半径 (CEP) は 2 自由度のカイ二乗分布に従うため、次の式に基づいて目的の確率を簡単に計算できます。

確率 不確実性の半径
50% CEP50 = 0.78 x CEP68
60% CEP60 = 0.90 x CEP68
70% CEP70 = 1.03 x CEP68
80% CEP80 = 1.19 x CEP68
90% CEP90 = 1.42 x CEP68
95% CEP95 = 1.62 x CEP68
99% CEP99 = 2.01 x CEP68

上の表を使用して、地図のハローインジケーターのさまざまな確率レベルを可視化できます。たとえば、水平精度が 20 メートルの場合、半径を (およそ) 2 倍にして、99% の確率を達成できます。精度値は常に CEP68 として与えられます。これは次のことを意味します。

CEP99 = 2.01 x CEP68 = 2.01 x 20 m = 40.2 m

これで、見つかった位置の周囲に半径 40.2 メートルの範囲を描くことができます。および、実際の位置は 99% の確率でその円の中に存在します。一方、半径 0 メートルの確率は 0% です。