私はいくつかの結果の「photo_reference」(「reference」に類似)値にあるGoogle Place Apiを使用しています。その写真を取得するためにそれを使用する方法についての言及は見つかりません。 「参照」を使用してPlaceDetailを取得する方法を知っており、photo_referenceの使用法も同様であることは確かですが、このphoto_referenceリクエストのJSON/XML URLが見つかりません。助けてくれてありがとうパベル
こちらのドキュメントをご覧ください: https://developers.google.com/places/documentation/photos
彼らはこの新しい場所の写真機能を発表しました
要するに、これはこの新しい機能をどのように使用すべきかです。
以下の代わりに独自の値を代入してください:
そしてあなたは終わった
Places APIは Place Search request で利用可能な場合は1つの場所の写真を返し、 Place Details request では最大10の場所の写真を返すことができるようになりました。
リクエストで写真の配列が返された場合は、photo_reference
含まれている写真オブジェクトから Place Photo request にmaxheight
やmaxwidth
、sensor
とkey
を付けてパラメーター:
https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=CnRvAAAAwMpdHeWlXl-lH0vp7lez4znKPIWSWvgvZFISdKx45AwJVP1Qp37YOrH7sqHMJ8C-vBDC546decipPHchJhHZL94RcTUfPa1jWzo-rSHaTlbNtjh-N68RkcToUCuY9v2HNpo5mziqkir37WU8FJEqVBIQ4k938TI3e7bf8xq-uwDZcxoUbO_ZJzPxremiQurAYzCTwRhE_V0&sensor=false&key=AddYourOwnKeyHere
詳細は documentation をご覧ください。
マップを開始した後、その画像で場所の詳細を取得できます
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: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()+"");
}
これが皆さんのお役に立てば幸いです。