2016-04-11 3 views
1

Ich verwende Google Geocoding-API, um eine automatische Vervollständigung der Suche nach einem Standort innerhalb einer angepassten Map zu realisieren. ich eine Anfrage wie folgt aus:Google Geocoding API Unerwartetes Ergebnis bei mehrdeutiger Suchanfrage

http://maps.googleapis.com/maps/api/geocode/json?address=frankfurt&components=country[de]

ich mit nur einem Ergebnis wieder diese Antwort bekam:

{ 
     results: [ 
     { 
      address_components: [ 
      { 
       long_name: "Frankfurt am Main", 
       short_name: "Frankfurt am Main", 
       types: [ 
       "locality", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Darmstadt", 
       short_name: "DA", 
       types: [ 
       "administrative_area_level_2", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Hessen", 
       short_name: "HE", 
       types: [ 
       "administrative_area_level_1", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Deutschland", 
       short_name: "DE", 
       types: [ 
       "country", 
       "political" 
       ] 
      } 
      ], 
      formatted_address: "Frankfurt am Main, Deutschland", 
      geometry: { 
      bounds: { 
       northeast: { 
       lat: 50.2272095, 
       lng: 8.8003977 
       }, 
       southwest: { 
       lat: 50.0152145, 
       lng: 8.4727299 
       } 
      }, 
      location: { 
       lat: 50.1109221, 
       lng: 8.6821267 
      }, 
      location_type: "APPROXIMATE", 
      viewport: { 
       northeast: { 
       lat: 50.2272095, 
       lng: 8.8003977 
       }, 
       southwest: { 
       lat: 50.0152145, 
       lng: 8.4727299 
       } 
      } 
      }, 
      place_id: "ChIJxZZwR28JvUcRAMawKVBDIgQ", 
      types: [ 
      "locality", 
      "political" 
      ] 
     } 
     ], 
     status: "OK" 
    } 

Das Problem ist, dass die Antwort alle Frankfurts enthalten soll, die in Deutschland existieren. (Frankfurt, Main + Frankfurt, Oder). Aber es antwortet nur mit Frankfurt, Main. Dasselbe geschieht an anderen Ortsnamen, die theoretisch mindestens zweimal vorkommen sollten. Aber Google zeigt nur eins. Wahrscheinlich der relevanteste.

Gibt es eine Möglichkeit, das zu ändern? Oder besser einen anderen Geocode-Dienst verwenden?

Ich habe versucht, Komponentenfilter zu verwenden, aber das änderte nichts.

+0

In dieser Frage sind mir einige Dinge aufgefallen, xomenas Antwort deckt alle ab, aber eins: country [de] ist nicht korrekt formatiert und wird ignoriert, Sie müssen country = de verwenden – miguev

Antwort

2

Dies ist ein beabsichtigtes Verhalten der Geocoding-API. Das prominenteste Ergebnis wird zurückkommen. Sie können jedoch Autocomplete request of Places API verwenden, die bis zu 5 Vorschläge zurückgeben kann.

Sie können einen Komponentenfilter nach Land festlegen und Typen auf Städte beschränken. Schauen Sie bitte auf die folgende Anfrage:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Frankfurt&types=(cities)&components=country%3ADE&key=YOUR_API_KEY

Diese Anfrage gibt sowohl "Frankfurt, Deutschland" (Platz ID ChIJxZZwR28JvUcRAMawKVBDIgQ) und "Frankfurt an der Oder, Deutschland" (Platz ID ChIJb_u1AiqYB0cRwDteW0YgIQQ).

graben weiter können Sie Geocodierungsanfragen für jeden Platz ID ausführen:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJxZZwR28JvUcRAMawKVBDIgQ&key=YOUR_API_KEY

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJb_u1AiqYB0cRwDteW0YgIQQ&key=YOUR_API_KEY

Hoffe, es hilft.