/** *こちらでご紹介する方法は、場所の予測補完を取得することを目的としたプログラムのサンプルです。 *このリクエストでのパラメータは、インドのコルカタ周辺にバイアスがかかるようにしています。 * * @param query the plus code query string (e.g. "GCG2+3M K") */ private void getPlacePredictions(String query) { // `locationBias` の値は、与えられた領域(現在はコルカタ)に予測結果をバイアスします。 // これらの値を変更することで、別の領域の結果が取得できます。 // FindAutocompletePredictionsRequest.Builder オブジェクトと同様に、適切な値を .setCountries() に渡してください。 LocationBias locationBias = RectangularBounds.newInstance( new LatLng(22.458744, 88.208162), new LatLng(22.730671, 88.524896)); // 次に Places SDK for Android でのプレイス オートコンプリートリクエストを作成します FindAutocompletePredictionsRequest newRequest = FindAutocompletePredictionsRequest.builder() .setLocationBias(locationBias) .setQuery(query) .setTypeFilter(TypeFilter.ESTABLISHMENT) .setCountries("IN") .build(); // 続いて、オートコンプリート予測リクエストを実行します placesClient.findAutocompletePredictions(newRequest).addOnSuccessListener((response) -> { List<AutocompletePrediction> predictions = response.getAutocompletePredictions(); if (predictions.isEmpty()) { Log.w(TAG, "No predictions found"); return; } // 1文字目の予測一致から Geocoding API リクエストを実行しています AutocompletePrediction firstPrediction = predictions.get(0); geocodePlace(firstPrediction.getPlaceId()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } }); } // ネットワーク リクエスト用の Volley ディスパッチキュー。 Android Context オブジェクトで初期化されます RequestQueue queue; /** * Geocode API リクエストを実行します * * @param placeID the ID of the Place to geocode */ private void geocodePlace(String placeID) { // リクエスト URL を作成します String apiKey = ""; // GMP API キー String url = "https://maps.googleapis.com/maps/api/geocode/json?place_id=%s&key=%s"; String requestURL = String.format(url, placeID, apiKey); // Geocoding API の HTTP リクエスト URL を使用して場所の地理座標を取得します JsonObjectRequest request = new JsonObjectRequest(Method.GET, requestURL, null, response -> { try { // "results" の値を調べて空でないことを確認します JSONArray results = response.getJSONArray("results"); if (results.length() == 0) { Log.w(TAG, "No results from geocoding request."); return; } // Gson を使用してレスポンスの JSON オブジェクトを POJO に変換します GeocodingResult result = new Gson() .fromJson(results.getString(0), GeocodingResult.class); LatLng latLng = result.geometry.location; Log.d(TAG, "LatLng for geocoded place: " + latLng); } catch (JSONException e) { e.printStackTrace(); } }, error -> Log.e(TAG, "Request failed")); // リクエストを Request キューに追加します。 queue.add(request); }
/**
*こちらでご紹介する方法は、場所の予測補完を取得することを目的としたプログラムのサンプルです。
*このリクエストでのパラメータは、インドのコルカタ周辺にバイアスがかかるようにしています。
*
* @param query the plus code query string (e.g. "GCG2+3M K")
*/
private void getPlacePredictions(String query) {
// `locationBias` の値は、与えられた領域(現在はコルカタ)に予測結果をバイアスします。
// これらの値を変更することで、別の領域の結果が取得できます。
// FindAutocompletePredictionsRequest.Builder オブジェクトと同様に、適切な値を .setCountries() に渡してください。
LocationBias locationBias = RectangularBounds.newInstance(
new LatLng(22.458744, 88.208162),
new LatLng(22.730671, 88.524896));
// 次に Places SDK for Android でのプレイス オートコンプリートリクエストを作成します
FindAutocompletePredictionsRequest newRequest = FindAutocompletePredictionsRequest.builder()
.setLocationBias(locationBias)
.setQuery(query)
.setTypeFilter(TypeFilter.ESTABLISHMENT)
.setCountries("IN")
.build();
// 続いて、オートコンプリート予測リクエストを実行します
placesClient.findAutocompletePredictions(newRequest).addOnSuccessListener((response) -> {
List<AutocompletePrediction> predictions = response.getAutocompletePredictions();
if (predictions.isEmpty()) {
Log.w(TAG, "No predictions found");
return;
}
// 1文字目の予測一致から Geocoding API リクエストを実行しています
AutocompletePrediction firstPrediction = predictions.get(0);
geocodePlace(firstPrediction.getPlaceId());
}).addOnFailureListener((exception) -> {
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
Log.e(TAG, "Place not found: " + apiException.getStatusCode());
});
// ネットワーク リクエスト用の Volley ディスパッチキュー。 Android Context オブジェクトで初期化されます
RequestQueue queue;
* Geocode API リクエストを実行します
* @param placeID the ID of the Place to geocode
private void geocodePlace(String placeID) {
// リクエスト URL を作成します
String apiKey = ""; // GMP API キー
String url = "https://maps.googleapis.com/maps/api/geocode/json?place_id=%s&key=%s";
String requestURL = String.format(url, placeID, apiKey);
// Geocoding API の HTTP リクエスト URL を使用して場所の地理座標を取得します
JsonObjectRequest request = new JsonObjectRequest(Method.GET, requestURL, null,
response -> {
try {
// "results" の値を調べて空でないことを確認します
JSONArray results = response.getJSONArray("results");
if (results.length() == 0) {
Log.w(TAG, "No results from geocoding request.");
// Gson を使用してレスポンスの JSON オブジェクトを POJO に変換します
GeocodingResult result = new Gson()
.fromJson(results.getString(0), GeocodingResult.class);
LatLng latLng = result.geometry.location;
Log.d(TAG, "LatLng for geocoded place: " + latLng);
} catch (JSONException e) {
e.printStackTrace();
}, error -> Log.e(TAG, "Request failed"));
// リクエストを Request キューに追加します。
queue.add(request);
address
address=GCG2%2B3M%20Kolkata
place_id: "GhIJm8QgsHKGNkARke18P7UZVkA"