0

私はAndroidでiOSアプリの再構築を行っているところですが、あちこちで行うのは恐ろしいことです。1 つの恐ろしい部分は、そのマップのことです。

などのクエリでユーザーの場所の周りの場所を取得する必要があります"park", "cafe", "bakery"。swift で使用したばかりですlocalSearchRequest.naturalLanguageQuery

self.localSearchRequest = MKLocalSearchRequest()
self.localSearchRequest.naturalLanguageQuery = mapSearchQuery
self.localSearchRequest.region = region
self.localSearch = MKLocalSearch(request: self.localSearchRequest)    

for item in localSearchResponse!.mapItems
     let annotation = MKPointAnnotation()
     annotation.coordinate = item.placemark.coordinate
     annotation.title = item.name
     self.mapView.addAnnotation(annotation)
}

GoogleMaps API を使用して Android で同じことを行う同様の方法はありますか? 私が見つけた唯一の方法は、 https: //developers.google.com/places/web-service/search から JSON 経由で取得することでした。これが Android アプリケーション用であるかどうかさえわかりません。

Android 用の GooglePlaces API は、特定の場所の周辺にあるすべての場所を一覧表示するだけで、それらをフィルタリングする方法などはありません。

4

2 に答える 2

1

長い間試した後、私は次の解決策を採用していました。GooglePlaces Webサービスの使用(私の質問のリンク):

final String PLACES_API_BASE_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?";
    final String LOCATION_PARAM = "location";
    final String RADIUS_PARAM = "radius";
    final String KEYWORD_PARAM = "keyword";
    final String LANGUAGE_PARAM = "language";
    final String KEY_PARAM = "key";

    mDestinationUri = Uri.parse(PLACES_API_BASE_URL).buildUpon()
            .appendQueryParameter(LOCATION_PARAM, String.valueOf(latitude)+","+String.valueOf(longitude))
            .appendQueryParameter(RADIUS_PARAM, "1000")
            .appendQueryParameter(KEYWORD_PARAM, naturalLanguageQuery)
            .appendQueryParameter(KEY_PARAM, "YOUR_API_KEY")
            .build();

これがGoogleから受け入れられるかどうかがわかります。

于 2016-10-15T14:44:53.213 に答える
0

区別しやすいように、Android 用の次の API の使用法は次のとおりです。

  • Android アプリに地図を追加するためのGoogle Maps Android API 。ベース マップ、3D 建物、屋内フロア プラン、ストリート ビューと衛星画像、カスタム マーカーなどを統合します。
  • Google Places API for Android を使用して、デバイスの場所の検出、オートコンプリートを実装し、何百万もの場所に関する情報をアプリに追加します。

また、ユーザーの現在地周辺の場所を取得するには、Current Placeを試してください。

PlaceDetectionApi.getCurrentPlace()デバイスが現在置かれている地元のビジネスまたはその他の場所を見つけるために電話をかけることができます。オプションで a を指定しPlaceFilterて、結果を 1 つ以上のプレイス ID (最大 10) に制限したり、現在開いているプレイスのみを選択したりできます。フィルターが指定されていない場合、結果はフィルター処理されません。

次のコード サンプルでは、​​デバイスが配置されている可能性が最も高い場所のリストを取得し、各場所の名前と可能性をログに記録します。

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
    .getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
  @Override
  public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
    for (PlaceLikelihood placeLikelihood : likelyPlaces) {
      Log.i(TAG, String.format("Place '%s' has likelihood: %g",
          placeLikelihood.getPlace().getName(),
          placeLikelihood.getLikelihood()));
    }
    likelyPlaces.release();
  }
});

この API を使用する際の権限や使用制限などの詳細については、所定のドキュメントを参照してください。

于 2016-10-06T16:47:10.423 に答える