Ich entwickle eine App, in der ich die Liste der Geldautomaten in der Nähe des Benutzers erhalte. Dafür benutze ich Google Places API, aber jedes Mal gibt es nur 20 Ergebnisse zurück. Ich möchte mehr Ergebnisse erzielen. In der API-Dokumentation wird erwähnt, dass 20 Ergebnisse zurückgegeben werden. Ich möchte jedoch wissen, ob es eine Möglichkeit gibt, mehr Daten abzurufen, oder ob ich dafür eine eigene Datenbank erstellen muss. Auch was ich in der API gefunden habe, ist, dass es nicht alle Geldautomaten für Indien hat. Die Informationen sind für einige Standorte auch nicht korrekt. Also, bitte schlagen Sie mir eine Idee vor, ob ich meine eigene Datenbank verwenden soll oder nicht. Ich weiß, dass ich Orte in Google Places registrieren kann, aber da ist das Problem, dass jedes Mal nur 20 Ergebnisse zurückgegeben werden. Wenn dieses Problem dennoch behoben ist, ist es hilfreich, die Places-API zu verwenden.
Bitte helfen Sie mir freundlich .....
Laut Dokumentation: http://code.google.com/intl/de/apis/maps/documentation/places/#PlaceSearchResponses
EDIT: Place API unterstützt jetzt die Paginierung von bis zu 60 Ergebnissen. Details finden Sie unten.
Die Places-API gibt bis zu 20 Einrichtungen pro Abfrage zurück. Jede Suche kann jedoch bis zu 60 Ergebnisse zurückgeben, die auf drei Seiten aufgeteilt sind. Wenn Ihre Suche mehr als 20 ergibt, enthält die Suchantwort einen zusätzlichen Parameter - next_page_token. Übergeben Sie den Wert von next_page_token an den Parameter page_token einer neuen Ortssuche, um die nächsten 20 Ergebnisse anzuzeigen.
Es gibt auch strikte Servicebedingungen, die angeben, dass Sie keine Vorabruf-, Cache- oder Store-Inhalte verwenden können, es sei denn, es handelt sich um die Inhaltskennung oder den Schlüssel, den Sie speichern dürfen, dh Referenztoken aus einer Ortssuche: http: //code.google.com/intl/de/apis/maps/terms.html#section_10_1_3
Im Hinblick darauf, in Indien keine Geldautomaten finden zu können. Alle Orte werden unter dem Typ establishment
kategorisiert, bis Google über genügend Metadaten für einen Ort verfügt, um ihn unter spezifischeren Ortstypen wie ATM
, cafe
, bar
usw. zu kategorisieren. Eine Möglichkeit, weitere Ergebnisse zu finden, besteht in der Verwendung des Parameters keyword
in Ihrer Anforderung etwas wie "ATM", "Bank" oder "Finanzen" als Wert. Laut Dokumentation: http://code.google.com/apis/maps/documentation/places/ Der Parameter keyword
wird mit allen verfügbaren Feldern abgeglichen, einschließlich, aber nicht beschränkt auf Name, Typ und Adresse sowie Kundenbewertungen und andere Inhalte von Drittanbietern.
Google API holt das 20 Ergebnis auf einer Seite. Angenommen, Sie möchten das Ergebnis der nächsten Seite 20 verwenden. Als Ergebnis verwenden Sie das next_page_token von google first page xml.
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
im zweiten Schritt verwenden Sie die erste Seite next_page_token data
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"
Sie können dies tun, indem Sie den Java-Client von Google API verwenden. Hier ein Beispiel, in dem der Java-Client verwendet wird, um alle 60 Ergebnisse zu erhalten.
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;
}
}
Die Radarsuche funktioniert nicht mehr, da sie nicht mehr vorhanden ist: https://cloud.google.com/blog/products/maps-platform/announcing-deprecation-of-place-add
Auf der Seite von Google Orte: https://developers.google.com/places/documentation/search Unter "Radarsuchanfragen" wird angegeben, dass: https: // maps verwendet wird. googleapis.com/maps/api/place/radarsearch/output?parameters Sie erhalten mit diesem Aufruf 200 Ergebnisse. Beachten Sie jedoch, dass jeder Aufruf 5 Anfragen für Ihr Kontingent verwendet.
Weitere Ergebnisse erhalten Sie auf der nächsten Seite.
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
Bitte versuchen Sie unter URL mit den folgenden Parametern
Wobei start = Nein der Ergebnisse beispielsweise von 0 oder 10 0r 20 aus