21

我正在使用 Google Place Api,其中一些结果是“photo_reference”(类似于“reference”)值。我找不到任何关于如何使用它来获取那张照片的信息。我知道如何使用“参考”来获取 PlaceDetail,并且我确信 photo_reference 的用法会相似,但我找不到此 photo_reference 请求的 JSON/XML URL。感谢您的任何帮助。帕维尔

4

6 回答 6

40

请在此处查看文档: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 的整数值
  • MAX_WIDTH - 从 1 到 1600 的整数值
  • YOUR_API_KEY

你完成了

于 2012-12-08T05:56:50.003 回答
5

Places API 现在支持返回一张地点照片(如果可用于地点搜索请求)和最多十张地点照片用于地点详情请求

如果您的请求返回了照片数组,您可以将photo_reference包含的照片对象中的和/或,和参数传递给放置照片请求:maxheightmaxwidthsensorkey

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

有关详细信息,请参阅文档。

于 2012-12-10T00:34:28.753 回答
3

请记住,不再有免费的照片请求。此刻(2020 年 11 月),是$7.0 for 1000 requests(如果你的音量达到 100,000)。检查下面的照片。

Google 放置照片请求的帐单信息

在Google Places 结算信息页面上阅读更多信息。

于 2020-11-13T11:04:21.623 回答
2

第 1 步:您应该用来调用 Google Place Photos 的 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()+"");
 }

希望这对每个人都有帮助。

于 2018-07-19T18:38:58.747 回答
2

启动地图后,您可以使用其图像获取地点详细信息

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 }));
        });
    }
  }
);
于 2019-02-25T19:46:24.337 回答
0

解决 Javascript 的 PhotoReference 问题

用户@RK 在 java 中解决了这个问题,但是在 js 中你需要使用fetch(). 这是我使用的代码:

await fetch(proxyUrl+url).then(async(ref)=>{

await ref.blob()}).then((image)=>{

// do what you need to do
console.log(image)

}).catch((err)=>{
  console.log(err);
})

在此,我使用了一个 heroku 链接proxyUrl和@Chriss Green 的帖子中显示的 url url。希望这可以帮助任何使用 js 感到困惑的人!

于 2021-04-05T04:03:00.163 回答