web-dev-qa-db-ja.com

GoogleプレイスAPI PlaceDetails写真参照

私はいくつかの結果の「photo_reference」(「reference」に類似)値にあるGoogle Place Apiを使用しています。その写真を取得するためにそれを使用する方法についての言及は見つかりません。 「参照」を使用してPlaceDetailを取得する方法を知っており、photo_referenceの使用法も同様であることは確かですが、このphoto_referenceリクエストのJSON/XML URLが見つかりません。助けてくれてありがとうパベル

21
Pavel

こちらのドキュメントをご覧ください: https://developers.google.com/places/documentation/photos

彼らはこの新しい場所の写真機能を発表しました

要するに、これはこの新しい機能をどのように使用すべきかです。

https://maps.googleapis.com/maps/api/place/photo?photoreference=PHOTO_REFERENCE&sensor=false&maxheight=MAX_HEIGHT&maxwidth=MAX_WIDTH&key=YOUR_API_KEY

以下の代わりに独自の値を代入してください:

  • PHOTO_REFERENCE
  • MAX_HEIGHT-1〜1600のint値
  • MAX_WIDTH-1〜1600のint値
  • YOUR_API_KEY

そしてあなたは終わった

36
Pavel Kostenko

Places APIは Place Search request で利用可能な場合は1つの場所の写真を返し、 Place Details request では最大10の場所の写真を返すことができるようになりました。

リクエストで写真の配列が返された場合は、photo_reference含まれている写真オブジェクトから Place Photo requestmaxheightmaxwidthsensorkeyを付けてパラメーター:

https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CnRvAAAAwMpdHeWlXl-lH0vp7lez4znKPIWSWvgvZFISdKx45AwJVP1Qp37YOrH7sqHMJ8C-vBDC546decipPHchJhHZL94RcTUfPa1jWzo-rSHaTlbNtjh-N68RkcToUCuY9v2HNpo5mziqkir37WU8FJEqVBIQ4k938TI3e7bf8xq-uwDZcxoUbO_ZJzPxremiQurAYzCTwRhE_V0&sensor=false&key=AddYourOwnKeyHere

詳細は documentation をご覧ください。

4
Chris Green

マップを開始した後、その画像で場所の詳細を取得できます

const service = new window.google.maps.places.PlacesService(map);
service.getDetails(
  {
    placeId: "some_place_id_here"
  },
  (data, status) => {
    if (status === window.google.maps.places.PlacesServiceStatus.OK) {
      data.photos &&
        data.photos.forEach(photo => {
          console.log(photo.getUrl({ maxWidth: 500, maxHeight: 500 }));
        });
    }
  }
);
1
Mas

ステップ1:Googleプレイスフォトの呼び出しに使用するURLは次のとおりです。

String url = https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=PHOTOREF&key=YOUR_API_KEY

参照: https://developers.google.com/places/web-service/photos

ステップ2:上記のURLは別のURLにリダイレクトするため、リダイレクトを自動的に処理するHTTPClientを使用します。

コード:

DefaultHttpClient hc = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpContext context = new BasicHttpContext();
hc.setRedirectHandler(new DefaultRedirectHandler() {
 @Override
 public URI getLocationURI(HttpResponse response,
 HttpContext context) throws org.Apache.http.ProtocolException {

  //Capture the Location header here - This is your redirected URL
  System.out.println(Arrays.toString(response.getHeaders("Location")));

  return super.getLocationURI(response,context);

  }
 });

 // Response contains the image you want. If you test the redirect URL in a browser or REST CLIENT you can see it's data
 HttpResponse response = hc.execute(httpget, context);
 if(response.getStatusLine().getStatusCode() == 200) {
   // Todo: use the Image response 
   HttpEntity entity = response.getEntity();
   if (entity != null) {
     InputStream instream = entity.getContent();
     Bitmap bmp = BitmapFactory.decodeStream(instream);         
     ImageView imageView = new ImageView(context);
     imageView.setImageBitmap(bmp);
     images.add(imageView);
     instream.close();
  }                 
 }
 else {
   System.out.println(response.getStatusLine().getStatusCode()+"");
 }

これが皆さんのお役に立てば幸いです。

1
R.K