Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated Mar 26, 2026

マップを操作する

Amplify-MapLibre アダプターをインストールする

以下の依存関係を build.gradle (Module :app) ファイルに追加し、プロンプトが表示されたら「Sync Now」をクリックします:

dependencies {
implementation 'com.amplifyframework:aws-auth-cognito:ANDROID_VERSION'
implementation 'com.amplifyframework:aws-geo-location:ANDROID_VERSION'
// MapLibre をアプリに統合するにはこの依存関係を追加します
implementation 'com.amplifyframework:maplibre-adapter:ANDROID_VERSION'
}

注: UI コンポーネントに必要な最小 API レベルは 21 です。

マップを表示する

まず、Amazon Location Service マップリソースをプロビジョニングし、マップを構成または既存のリソースを使用ガイドの手順に従ってアプリを構成していることを確認します。

ユーザーインターフェースを選択する

Android アプリでマップをレンダリングするために利用可能な 2 つの UI コンポーネントがあります。MapLibreViewAmplifyMapViewです。MapLibreViewは標準のAndroid MapLibre MapViewの拡張で、Amplify.Geo API と統合されていますが、AmplifyMapViewは組み込みの場所検索、マップコントロール、マーカー、いくつかの標準 UX インタラクションを備えたラッパーです。

MapLibreViewAmplifyMapView

目標が UI をカスタマイズすることである場合、MapLibreViewは独自のコントロールとフローを構築および統合できるプレーンなマップを提供します。目標が標準 UI を使用してマップで場所を検索および選択することである場合、AmplifyMapViewは良い選択です。

AmplifyMapViewの拡張性は制限されていますが、mapViewプロパティ(Java の場合getMapView())を通じてラップされたMapLibreViewにアクセスできます。したがって、MapLibreViewで利用可能なすべての API もAmplifyMapViewで利用可能です。

MapLibreView

MapLibreViewは MapLibre ライブラリによって提供される標準MapViewの拡張です。実装はAmplify.Geo統合をバックグラウンドに追加して、開発者がライブラリ統合ではなく UI に集中できるようにします。つまり、すべての MapLibre API が利用可能で、期待通りに動作します。API リファレンスとガイドについては、公式 MapLibre SDK for Android ドキュメントを確認してください。

アプリにマップを追加する

  1. Android Studio でアプリのsrc/main/res/layoutディレクトリに移動します

  2. activity_main.xmlという新しいレイアウトを作成するか、選択した既存のレイアウトを使用し、以下を追加します:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.amplifyframework.geo.maplibre.view.MapLibreView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

MapLibreView を初期化する

  1. アプリのアクティビティ(例:MainActivity)に移動します

  2. アプリのアクティビティの先頭に MapLibreView のインポートステートメントを追加します:

import com.amplifyframework.geo.maplibre.view.MapLibreView;
import com.amplifyframework.geo.maplibre.view.MapLibreView
  1. アクティビティの最上位でビューインスタンス変数を宣言します:
private MapLibreView mapView;
private val mapView by lazy {
findViewById<MapLibreView>(R.id.mapView)
}
  1. アクティビティのonCreateでマップと対話します:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 注:setContentView を呼び出す前に Amplify を構成してください
// 入門手順を参照してください
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapView);
// これでマップビューと相互作用できます。以下の例を参照してください
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 注:setContentView を呼び出す前に Amplify を構成してください
// 入門手順を参照してください
setContentView(R.layout.activity_main)
// これでマップビューと相互作用できます。以下の例を参照してください
}

マップと相互作用する

マップと相互作用するには、マップを読み込む必要があります。マップの準備が整ったときに呼び出されるgetMapAsyncまたは、マップとそのスタイルの両方が準備が整ったときに呼び出されるgetStyleのいずれかを使用できます。SymbolManagerなどの一部の API では、マップ上にマーカーやその他のシンボルを描画できるようにスタイルも読み込まれる必要があります。それがgetStyleが便利な場合です。

マップの中心を更新する

import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.geometry.LatLng;
mapView.getMapAsync(map -> {
LatLng seattle = new LatLng(47.6160281982247, -122.32642111977668);
map.setCameraPosition(
new CameraPosition.Builder()
.target(seattle)
.zoom(13.0)
.build()
);
});
import com.mapbox.mapboxsdk.camera.CameraPosition
import com.mapbox.mapboxsdk.geometry.LatLng
mapView.getMapAsync { map ->
val seattle = LatLng(47.6160281982247, -122.32642111977668)
map.cameraPosition = CameraPosition.Builder()
.target(seattle)
.zoom(13.0)
.build()
}

cameraPositionを更新すると、カメラを渡された座標に移動します。アニメーションなしで。アニメーションが必要な場合は、代わりにmap.animateCamera()を使用してください。詳細については、公式リファレンスを参照してください。

マップにマーカーを追加する

MapLibre SDK for Android は、マップ上にマーカーを表示するためにMapLibre Annotation Pluginに依存しています。

import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions;
mapView.getStyle((map, style) -> {
LatLng spaceNeedle = new LatLng(47.6205063, -122.3514661);
mapView.symbolManager.create(
new SymbolOptions()
.withIconImage("place")
.withLatLng(spaceNeedle)
);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(spaceNeedle, 16.0));
});
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions
mapView.getStyle { map, style ->
val spaceNeedle = LatLng(47.6205063, -122.3514661)
mapView.symbolManager.create(
SymbolOptions()
.withIconImage("place")
.withLatLng(spaceNeedle)
)
map.animateCamera(CameraUpdateFactory.newLatLngZoom(spaceNeedle, 16.0))
}

注:

  • mapView.symbolManagerMapLibre Annotation PluginからSymbolManagerの組み込み参照で、いくつかの標準構成があります。
  • カスタマイズされたアイコンまたは他のタイプのシェイプとレイヤーのレンダリングが必要な場合、SymbolManagerのインスタンスを作成して、異なるタイプのカスタムユースケースを管理するために使用できます。

MapLibreView 構成パラメータ

MapLibreViewには、公式ガイドではまだ提示されていないいくつかの構成パラメータがあります。完全なリストについては、ソース xml ファイルを参照してください。

また、利用可能なパブリック API ドキュメントについては、公式 MapView API リファレンスを確認してください。

AmplifyMapView

AmplifyMapViewは、デフォルトの検索フィールド、マーカー、ビジュアライゼーションモード(マップまたはリスト)、およびマップコントロールを提供します。場所ピッカーを簡単に任意のアプリに埋め込むために使用できます。AmplifyMapViewの検索機能を使用するには、ロケーション検索を構成または既存の Amazon Location Service リソースを使用ガイドの手順を使用して、検索インデックスリソースをプロビジョニングします。

アプリにマップを追加する

  1. Android Studio でアプリのsrc/main/res/layoutディレクトリに移動します

  2. activity_main.xmlという新しいレイアウトを作成するか、選択した既存のレイアウトを使用し、以下を追加します:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.amplifyframework.geo.maplibre.view.AmplifyMapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

AmplifyMapView を初期化する

  1. アプリのアクティビティ(例:MainActivity)に移動します

  2. アプリのアクティビティの先頭に AmplifyMapView のインポートステートメントを追加します:

import com.amplifyframework.geo.maplibre.view.AmplifyMapView;
import com.amplifyframework.geo.maplibre.view.AmplifyMapView
  1. アクティビティの最上位でビューインスタンス変数を宣言します:
private AmplifyMapView amplifyMapView;
private val amplifyMapView by lazy {
findViewById<AmplifyMapView>(R.id.mapView)
}
  1. アクティビティのonCreateでマップと相互作用します:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 注:setContentView を呼び出す前に Amplify を構成してください
// 入門手順を参照してください
setContentView(R.layout.activity_main);
amplifyMapView = findViewById(R.id.mapView);
// これでマップビューと相互作用できます。以下の例を参照してください
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 注:setContentView を呼び出す前に Amplify を構成してください
// 入門手順を参照してください
setContentView(R.layout.activity_main)
// これでマップビューと相互作用できます。以下の例を参照してください
}

場所を選択する

AmplifyMapViewが提供するメイン API は、マップ上で場所が選択されたときに呼び出されるイベントリスナーです。マークをクリックするか、リスト上のアイテムをクリックします。

import android.util.Log;
amplifyMapView.setOnPlaceSelectListener((place, symbol) -> {
// place は AmazonLocationPlace のインスタンスです
// symbol は MapLibre から Symbol のインスタンスです
Log.i("MyAmplifyApp", "The selected place is " + place.getLabel());
Log.i("MyAmplifyApp", "It is located at " + place.getCoordinates());
});
import android.util.Log
amplifyMapView.onPlaceSelect { place, symbol ->
// place は AmazonLocationPlace のインスタンスです
// symbol は MapLibre から Symbol のインスタンスです
Log.i("MyAmplifyApp", "The selected place is ${place.label}")
Log.i("MyAmplifyApp", "It is located at ${place.coordinates}")
}

AmplifyMapView 構成パラメータ

ビューは以下の構成パラメータで初期化できます:

プロパティ説明デフォルト
map:map_centerLatitudeFloat初期中心緯度0.0
map:map_centerLongitudeFloat初期中心経度0.0
map:map_minZoomLevelInteger最小ズームレベル(最小は 0)3
map:map_maxZoomLevelInteger最大ズームレベル(最大は 22)18
map:map_showCompassIndicatorBooleanコンパスを表示するかどうかtrue
map:map_showZoomControlsBooleanズームコントロールを表示するかfalse
map:map_zoomLevelInteger初期ズームレベル(0 から 22)14

例:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.amplifyframework.geo.maplibre.view.AmplifyMapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:map_zoomLevel="12"
map:map_centerLatitude="47.6160281982247"
map:map_centerLongitude="-122.32642111977668"
map:map_showCompassIndicator="true"
map:map_showZoomControls="true"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

異なるマップスタイルを表示する

getAvailableMaps API は、表示可能なすべてのマップの情報を取得します。

これは、ユーザーにさまざまなマップスタイルの選択肢を提供したい場合に便利です。

Amplify.Geo.getAvailableMaps(
result -> {
for (final MapStyle style : result) {
Log.i("MyAmplifyApp", style.toString());
}
},
error -> Log.e("MyAmplifyApp", "Failed to get available maps.", error)
);
Amplify.Geo.getAvailableMaps(
{
for (mapStyle in it) {
Log.i("MyAmplifyApp", mapStyle.toString())
}
},
{ Log.e("MyAmplifyApp", "Failed to get available maps.", it) }
)
try {
val result = Amplify.Geo.getAvailableMaps()
for (mapStyle in result) {
Log.i("MyAmplifyApp", mapStyle.toString())
}
} catch (error: GeoException) {
Log.e("MyAmplifyApp", "Failed to get available maps.", error)
}
RxAmplify.Geo.getAvailableMaps().subscribe(
result -> {
for (final MapStyle style : result) {
Log.i("MyAmplifyApp", style.toString());
}
},
error -> Log.e("MyAmplifyApp", "Failed to get available maps.", error)
);

アダプターからsetStyleメソッドを使用してマップに別のスタイルを設定できます:

MapLibreViewで:

// mapStyle は Amplify.Geo.getAvailableMaps()から選択されたスタイルへの参照です
mapView.setStyle(mapStyle, style -> {
Log.i("MyAmplifyApp", "Finished loading " + mapStyle.getStyle());
});

AmplifyMapViewで:

// mapStyle は Amplify.Geo.getAvailableMaps()から選択されたスタイルへの参照です
amplifyMapView.getMapView().setStyle(mapStyle, style -> {
Log.i("MyAmplifyApp", "Finished loading " + mapStyle.getStyle());
});

MapLibreViewで:

// mapStyle は Amplify.Geo.getAvailableMaps()から選択されたスタイルへの参照です
mapView.setStyle(mapStyle) { style ->
Log.i("MyAmplifyApp", "Finished loading ${mapStyle.style}.")
}

AmplifyMapViewで:

// mapStyle は Amplify.Geo.getAvailableMaps()から選択されたスタイルへの参照です
amplifyMapView.mapView.setStyle(mapStyle) { style ->
Log.i("MyAmplifyApp", "Finished loading ${mapStyle.style}.")
}