Amplify Geo のセットアップ
Amplify は、Web アプリケーション向けのマップおよび場所検索用の API とマップ UI コンポーネントを提供します。わずか数行のコードで、アプリにマップと場所検索機能を追加できます。以下は、AWS Cloud Development Kit (AWS CDK) を使用して Amazon Location Services で実装された Geo リソースを作成する例です。ただし、このサービスにはまだ公式なハンドライティング (L2) コンストラクトがないことに注意してください。
import { defineBackend } from "@aws-amplify/backend";import { Policy, PolicyStatement } from "aws-cdk-lib/aws-iam";import { CfnMap } from "aws-cdk-lib/aws-location";import { Stack } from "aws-cdk-lib/core";import { auth } from "./auth/resource";import { data } from "./data/resource";
const backend = defineBackend({ auth, data, // additional resources});
const geoStack = backend.createStack("geo-stack");
// create a location services mapconst map = new CfnMap(geoStack, "Map", { mapName: "myMap", description: "Map", configuration: { style: "VectorEsriNavigation", }, pricingPlan: "RequestBasedUsage", tags: [ { key: "name", value: "myMap", }, ],});
// create an IAM policy to allow interacting with geo resourceconst myGeoPolicy = new Policy(geoStack, "GeoPolicy", { policyName: "myGeoPolicy", statements: [ new PolicyStatement({ actions: [ "geo:GetMapTile", "geo:GetMapSprites", "geo:GetMapGlyphs", "geo:GetMapStyleDescriptor", ], resources: [map.attrArn], }), ],});
// apply the policy to the authenticated and unauthenticated rolesbackend.auth.resources.authenticatedUserIamRole.attachInlinePolicy(myGeoPolicy);backend.auth.resources.unauthenticatedUserIamRole.attachInlinePolicy(myGeoPolicy);
// patch the map resource to the expected output configurationbackend.addOutput({ geo: { aws_region: geoStack.region, maps: { items: { [map.mapName]: { style: "VectorEsriNavigation", }, }, default: map.mapName, }, },});Amplify Geo は、モバイルアプリケーション開発用の API とマップ UI コンポーネントを提供しており、わずか数行のコードでアプリにマップを追加できます。Amplify Geo API は Amazon Location Service を使用して実装されており、MapLibre のマップ UI コンポーネントは既に Geo API と統合されています。
前提条件
Amplify ライブラリが統合されたアプリケーション、および以下のいずれかの最小ターゲット:
- iOS 13.0 (Xcode 14.1 以上を使用)
- macOS 10.15 (Xcode 14.1 以上を使用)
- tvOS 13.0 (Xcode 14.3 以上を使用)
- watchOS 9.0 (Xcode 14.3 以上を使用)
- visionOS 1.0 (Xcode 15 beta 2 以上を使用)。(プレビューサポート - 詳細は以下を参照)
完全な例については、プロジェクトセットアップのウォークスルーに従ってください。
Amplify ライブラリをインストールする
Geo プラグインは Cognito Auth に依存しています。
-
アプリケーションに Amplify ライブラリをインストールするには、Xcode でプロジェクトを開き、File > Add Packages... を選択します。
-
Amplify Library for Swift GitHub リポジトリの URL (
https://github.com/aws-amplify/amplify-swift) を検索バーに入力し、Add Package をクリックします。
- 最後に、AWSLocationGeoPlugin、AWSCognitoAuthPlugin、および Amplify をターゲットに追加します。その後、Add Package をクリックします。
Amplify Geo を初期化する
Amplify Geo を初期化するには、Amplify.add(plugin:) メソッドを使用して AWS Location Geo プラグインを追加します。次に、Amplify.configure(with:) を呼び出して Amplify の設定を完了します。
アプリケーションのメインファイル - AppDelegate.swift または <YOUR_APP_NAME>App.swift(アプリケーションのライフサイクルに応じて)を開き、ファイルの上部に次の import ステートメントを追加します:
import Amplifyimport AWSCognitoAuthPluginimport AWSLocationGeoPlugin同じファイルで、Amplify を設定する関数を作成します:
func configureAmplify() { do { try Amplify.add(plugin: AWSCognitoAuthPlugin()) try Amplify.add(plugin: AWSLocationGeoPlugin()) try Amplify.configure(with: .amplifyOutputs) print("Initialized Amplify"); } catch { print("Could not initialize Amplify: \(error)") }}次に、アプリケーションの起動ポイントで configureAmplify() 関数を呼び出します。
@mainstruct <YOUR_APP_NAME>App: App { // add a default initializer and configure Amplify public init() { configureAmplify() }}@UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate { func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { configureAmplify() return true } // ...}このアプリケーションをビルドして実行すると、コンソールウィンドウに以下が表示されます:
Initialized Amplify注:
- 既存の Amazon Location Service リソースを使用したい場合は、このガイドに従ってください。
- Geo で直接サポートされていない Amazon Location Service API を使用したい場合は、エスケープハッチを使用して Amazon Location Service SDK にアクセスしてください。
参考資料
マップの料金プラン
マップの例の料金プランは RequestBasedUsage に設定されています。
料金プランの詳細については、ロケーションサービスの料金とロケーションサービスの利用規約(セクション 82.5)を参照することをお勧めします。