Need to configure your backend?See Build a Backend →
場所検索を使用する
マップに場所検索機能を追加する
まず、場所検索を設定または既存のAmazon Location Serviceリソースを使用の指示に従って検索インデックスリソースをプロビジョニングして、アプリを設定してください。また、アプリケーションでマップの表示をすでに設定していることを確認してください。
AmplifyMapViewは組み込みの場所検索、検索フィールド、および場所マーカーを提供します。マップページのAmplifyMapViewセクションに従ってAmplifyMapViewをセットアップしてください。
場所ベースの検索機能
Amplify Geoを使用すると、テキスト、住所、または地理座標で場所を検索できます。
テキストで検索する
Amplify.Geo.searchByText() APIを使用すると、住所、名前、都市、地域などの自由形式のテキストで場所またはポイントオブインタレストを検索できます。
String searchQuery = "Amazon Go";Amplify.Geo.searchByText(searchQuery, result -> { for (final Place place : result.getPlaces()) { Log.i("MyAmplifyApp", place.toString()); } }, error -> Log.e("MyAmplifyApp", "Failed to search for " + searchQuery, error));val searchQuery = "Amazon Go"Amplify.Geo.searchByText(searchQuery, { for (place in it.places) { Log.i("MyAmplifyApp", place.toString()) } }, { Log.e("MyAmplifyApp", "Failed to search for $searchQuery", it) })val searchQuery = "Amazon Go"try { val result = Amplify.Geo.searchByText(searchQuery) for (place in result.places) { Log.i("MyAmplifyApp", place.toString()) }} catch (error: GeoException) { Log.e("MyAmplifyApp", "Failed to search for $searchQuery", it)}String searchQuery = "Amazon Go";RxAmplify.Geo.searchByText(searchQuery).subscribe( result -> { for (final Place place : result.getPlaces()) { Log.i("MyAmplifyApp", place.toString()); } }, error -> Log.e("MyAmplifyApp", "Failed to search for " + searchQuery, error));GeoSearchByTextOptions内で以下のパラメータを指定して検索結果を制限できます:
countries- 検索結果を指定された国に制限します。ISO Alpha-3国コードに従っています。(デフォルトは"USA")maxResults- 最大結果セットを制限します(デフォルトは50)searchAreanear- 検索の開始場所として機能しますwithin- 検索内の領域を制限します
Coordinates position = new Coordinates(47.6153, -122.3384);GeoSearchByTextOptions options = GeoSearchByTextOptions.builder() .maxResults(10) .searchArea(SearchArea.near(position)) .countries(Collections.singletonList(CountryCode.USA)) .build();val position = Coordinates(47.6153, -122.3384)val options = GeoSearchByTextOptions.builder() .maxResults(10) .searchArea(SearchArea.near(position)) .countries(listOf(CountryCode.USA)) .build()val position = Coordinates(47.6153, -122.3384)val options = GeoSearchByTextOptions.builder() .maxResults(10) .searchArea(SearchArea.near(position)) .countries(listOf(CountryCode.USA)) .build()Coordinates position = new Coordinates(47.6153, -122.3384);GeoSearchByTextOptions options = GeoSearchByTextOptions.builder() .maxResults(10) .searchArea(SearchArea.near(position)) .countries(Collections.singletonList(CountryCode.USA)) .build();座標で検索する
Amplify.Geo.searchByCoordinates() APIは逆ジオコーダーで、座標点を取得し、マップのその点で見つかるものについての情報を返します。
返されるオブジェクトはAmplify.Geo.searchByText() APIと同じ形です。
Coordinates position = new Coordinates(47.6153, -122.3384);Amplify.Geo.searchByCoordinates(position, result -> { for (final Place place : result.getPlaces()) { Log.i("MyAmplifyApp", place.toString()); } }, error -> Log.e("MyAmplifyApp", "Failed to reverse geocode " + position, error));val position = Coordinates(47.6153, -122.3384)Amplify.Geo.searchByCoordinates(position, { for (place in it.places) { Log.i("MyAmplifyApp", place.toString()) } }, { Log.e("MyAmplifyApp", "Failed to reverse geocode $position", it) })val position = Coordinates(47.6153, -122.3384)try { val result = Amplify.Geo.searchByCoordinates(position) for (place in result.places) { Log.i("MyAmplifyApp", place.toString()) }} catch (error: GeoException) { Log.e("MyAmplifyApp", "Failed to reverse geocode $position", error)}Coordinates position = new Coordinates(47.6153, -122.3384);RxAmplify.Geo.searchByCoordinates(position).subscribe( result -> { for (final Place place : result.getPlaces()) { Log.i("MyAmplifyApp", place.toString()); } }, error -> Log.e("MyAmplifyApp", "Failed to reverse geocode " + position, error));GeoSearchByCoordinatesOptions内で以下のパラメータを指定して検索結果を制限できます:
maxResults- 最大結果セットを制限します(デフォルトは50)
GeoSearchByCoordinatesOptions options = GeoSearchByCoordinatesOptions.builder() .maxResults(1) .build();val options = GeoSearchByCoordinatesOptions.builder() .maxResults(1) .build()val options = GeoSearchByCoordinatesOptions.builder() .maxResults(1) .build()GeoSearchByCoordinatesOptions options = GeoSearchByCoordinatesOptions.builder() .maxResults(1) .build();