Amazon Location Service SDKを使用する
Amplify GeoはAmazon Location Serviceを使用した一般的なユースケースのソリューションを提供していますが、Amplify Geoが現在サポートしていない機能については、Amazon Location Service SDKに直接アクセスできます。
このガイドに従って、Amplify認証資格情報を使用してAmazon Location Service用のaws-sdkを開始します。
概要
このチュートリアルでは、以下の内容を取り上げます。
- Amplify認証でAmazon Location Service SDK呼び出し用のAWS SDK JavaScript v3パッケージをセットアップする。
- Amazon Location Service SDKを使用するコード例。
SDK依存関係のインストール
クライアントでSDKを使用するための最初のステップは、次のコマンドで必要な依存関係をインストールすることです。
npm add @aws-sdk/client-locationアプリをAmazon Location Serviceに接続する
以下の手順では、アプリをAmazon Location Service APIに接続します。
アプリをAmazon Location Serviceに接続するには
React Appでsrc/App.jsファイルを開き、次の関数を呼び出してAmazon Location Serviceクライアントを初期化します。
import { Amplify } from 'aws-amplify';import { fetchAuthSession } from 'aws-amplify/auth';import { LocationClient, AssociateTrackerConsumerCommand} from '@aws-sdk/client-location';import outputs from '../amplify_outputs.json';Amplify.configure(outputs);
const createClient = async () => { const session = await fetchAuthSession(); const client = new LocationClient({ credentials: session.credentials, region: amplifyconfig.aws_project_region }); return client;};これでアプリがAmazon Location Serviceに正常に接続されました。
Amazon Location Service APIを使用する
Amazon Location Service APIにアクセスするには、Amplify Geo MapのドキュメントまたはAmazon Location Serviceコンソールの指示に従ってリソースをプロビジョニングし、アプリを設定していることを確認してください。
サポートされている機能の完全なリストについては、Amazon Location APIリファレンスドキュメントを参照できます。
例: デバイス位置の取得
この例では、Amazon Location Serviceコンソールを使用してTrackerリソースをあらかじめプロビジョニングしておく必要があります。
次のコードは、Amazon Location Service APIを使用してデバイス位置を更新し、作成したTrackerを使用してデバイス位置を取得する方法を詳しく説明しています。
// UpdateDevicePosition APIconst params = { TrackerName: 'trackerId', Updates: [ { DeviceId: 'deviceId', Position: [-122.431297, 37.773972], SampleTime: new Date() } ]};const command = new BatchUpdateDevicePositionCommand(params);client.send(command, (err, data) => { if (err) console.error(err); if (data) console.log(data);});
// GetDevicePosition APIconst client = await createClient();const params = { TrackerName: 'trackerId', DeviceId: 'deviceId'};const command = new GetDevicePositionCommand(params);client.send(command, (err, data) => { if (err) console.error(err); if (data) console.log(data);});