web-dev-qa-db-fra.com

Google Place API a placé une référence de photo

J'utilise Google Place API où se trouve sur certains résultats "photo_reference" (semblable à "référence"). Je ne trouve aucune mention sur cette façon de l'utiliser pour obtenir cette photo. Je sais comment utiliser "Référence" pour se placer et je suis sûr que l'utilisation de photo_reference sera similaire, mais je ne trouve pas d'URL JSON/XML pour cette demande photo_reference. Merci pour toute aide. Pavé

21
Pavel

Veuillez consulter la documentation ici: https://developers.google.com/places/documentation/photos

Ils viennent d'annoncer ce nouveau placer des photos

En bref, c'est ainsi que vous devriez utiliser cette nouvelle fonctionnalité:

https://maps.googleapis.com/maps/api/place/photo?photoreference=photo_reference&sensor=false&maxheight=max_height&maxwidth=max_width&key=Your_api_key

il suffit de substituer vos propres valeurs à la place de:

  • Photo_reference
  • Max_height - valeur int de 1 à 1600
  • Max_Width - Valeur int de 1 à 1600
  • Votre_api_key

et vous avez terminé

36
Pavel Kostenko

Les endroits API prend désormais en charge le retour d'une photo de lieu si disponible pour A Place de recherche de la demande et jusqu'à dix photos de placement pour une Demande de détail de lie .

Si une matrice de photos est renvoyée avec votre demande, vous pouvez passer le photo_reference à partir d'un objet de photo contenue à une Placez la demande de photo avec le maxheight et/ou maxwidth, sensor et key _ paramètres:

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

S'il vous plaît voir la Documentation pour plus de détails.

4
Chris Green

Après avoir initié une carte, vous pouvez obtenir des détails avec ses images

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

Étape 1: L'URL à utiliser pour appeler Google Place Photos est:

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

Reportez-vous: https://developers.google.com/places/web-service/photos

Étape 2: Étant donné que l'URL ci-dessus redirige vers une autre URL, utilisez httpclient, car elle gère automatiquement les trucs de redirection.

Code:

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()+"");
 }

J'espère que cela aide tout le monde.

1
R.K