ユーザーの近くにあるATMのリストを取得するアプリを開発しています。そのためにGoogle Places APIを使用していますが、毎回20件の結果のみを返します。もっと結果を出したいです。 APIドキュメントでは、20の結果が返されると記載されていますが、もっと多くのデータを取得する方法はありますか、またはそのために独自のデータベースを作成する必要がありますか?
また、私がAPIで見つけたのは、インド用のすべてのATMがないということです。一部の場所については、情報も正確ではありません。だから私は自分のデータベースを使うべきかどうかを教えてください?
Googleプレイスに場所を登録できることはわかっていますが、毎回20件の結果しか返さないという問題があります。とにかくこの問題が解決した場合は、Places APIを使用することをお勧めします。
親切に助けてください.....
ドキュメントに従って:
https://developers.google.com/places/web-service/search#PlaceSearchResponses
EDIT:Place APIで、最大60件の結果のページ分割がサポートされるようになりました。詳細については、以下を参照してください。
Places APIはクエリごとに最大20の施設を返します。ただし、各検索で60ページもの結果が返され、3ページに分割されます。検索結果が20を超える場合、検索応答には追加のパラメーター— next_page_tokenが含まれます。 next_page_tokenの値を新しいプレイス検索のpage_tokenパラメータに渡して、次の20件の結果セットを表示します。
格納することを許可されているコンテンツ識別子またはキー、つまりプレイス検索からの参照トークンでない限り、コンテンツをプリフェッチ、キャッシュ、またはストアできないことを指定する厳密な利用規約もあります。
https://cloud.google.com/maps-platform/terms/?_ga=#3-license
インドでATMを見つけることができないことに関して。すべての場所は、establishment
、ATM
、cafe
のようなより具体的な場所のタイプに分類するための場所に関する十分なメタデータがGoogleにあるまで、タイプbar
に分類されます。より多くの結果が見つかる可能性のある回避策は、値として「ATM」、「銀行」、「金融」などの何かを使用してリクエストでkeyword
パラメータを使用することです。ドキュメントに従って:
https://developers.google.com/places/web-service/search#PlaceSearchRequests
keyword
パラメータは、名前、タイプ、住所、顧客レビュー、その他のサードパーティコンテンツなど、使用可能なすべてのフィールドと照合されます。
Google API 1ページで20 Resultをフェッチします。次の20ページの結果を使用する場合、Googleの最初のページのxmlからnext_page_tokenを使用します。結果として。
1)https://maps.googleapis.com/maps/api/place/search/xml?location=Enter latitude,Enter Longitude&radius=10000&types=store&hasNextPage=true&nextPage()=true&sensor=false&key=Enter Google_Map_key
2番目のステップでは、最初のページのnext_page_tokenデータを使用します
2)https://maps.googleapis.com/maps/api/place/search/xml?location=Enter Latitude,Enter Longitude&radius=10000&types=store&hasNextPage=true&nextPage()=true&sensor=false&key=enter google_map_key &pagetoken="Enter the first page token Value"
これは、Google APIを使用して行うことができますJavaクライアント-60 =すべての結果を取得するためにJavaクライアントを使用する例を次に示します。
public PlacesList search(double latitude, double longitude, double radius, String types)
throws Exception {
try {
HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
HttpRequest request = httpRequestFactory
.buildGetRequest(new GenericUrl("https://maps.googleapis.com/maps/api/place/search/json?"));
request.getUrl().put("key", YOUR_API_KEY);
request.getUrl().put("location", latitude + "," + longitude);
request.getUrl().put("radius", radius);
request.getUrl().put("sensor", "false");
request.getUrl().put("types", types);
PlacesList list = request.execute().parseAs(PlacesList.class);
if(list.next_page_token!=null || list.next_page_token!=""){
Thread.sleep(4000);
/*Since the token can be used after a short time it has been generated*/
request.getUrl().put("pagetoken",list.next_page_token);
PlacesList temp = request.execute().parseAs(PlacesList.class);
list.results.addAll(temp.results);
if(temp.next_page_token!=null||temp.next_page_token!=""){
Thread.sleep(4000);
request.getUrl().put("pagetoken",temp.next_page_token);
PlacesList tempList = request.execute().parseAs(PlacesList.class);
list.results.addAll(tempList.results);
}
}
return list;
} catch (HttpResponseException e) {
return null;
}
}
レーダー検索は存在しないため、機能しなくなりました: https://cloud.google.com/blog/products/maps-platform/announcing-deprecation-of-place-add
参照してください: https://stackoverflow.com/a/48171023/99
https://developers.google.com/places/documentation/search のGoogleプレイスページでは、「レーダー検索リクエスト」の下に次のように記載されています: https:// maps。 googleapis.com/maps/api/place/radarsearch/output?parameters この呼び出しを使用すると200件の結果が得られますが、各呼び出しは割り当てに対して5つのリクエストを使用することに注意してください。
あなたは次のページトークンからより多くの結果を得ることができます:
https://maps.googleapis.com/maps/api/place/textsearch/json?query=[your search key Word]&location=latitude,longitude&radius=value&key=[your API key]&next_page_token=next_page_token value
以下のパラメーターで以下のURLを試してください
ここで、開始=結果の数が、たとえば0または10から開始する場合0r 20 –