0

Wir haben eine eingebettete Suchleiste in unserer Website, die das Google Maps API für beide Vorschläge verwendet und Ergebnisse. Wenn ein Nutzer nach „New York“ und klickt speziell auf dem Vorschlag, die anzeigt, dass sie für New York State suchen dieser api-Aufruf erfolgt:Wenn ich das Google Maps API abfrage, bekomme ich identische Ergebnisse für "New York, USA" und "New York, NY, USA"

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sNew%20York%2C%20United%20States&7sUS&8m2&1scountry&2sUS&9sen-US&callback=xdc._ohwoca&token=44216

Wenn sie geben Sie einfach in „New York“ und drücken Sie die Eingabetaste, oder den Vorschlag auszuwählen, die „New York, NY“, diese api Anruf getätigt wird bezeichnet:

https://maps.googleapis.com/maps/api/js/GeocodeService.Search?4sNew%20York%2C%20NY%2C%20United%20States&7sUS&8m2&1scountry&2sUS&9sen-US&callback=xdc._n2ga8u&token=62787

das Problem ist, dass das zurückgegebene JSON zwischen den beiden, mit Ausnahme des Callback identisch ist Überschrift:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "New York", 
       "short_name" : "New York", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "New York", 
       "short_name" : "NY", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "New York, NY, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 40.9175771, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4773991, 
        "lng" : -74.25908989999999 
       } 
      }, 
      "location" : { 
       "lat" : 40.7127837, 
       "lng" : -74.0059413 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 40.9152555, 
        "lng" : -73.70027209999999 
       }, 
       "southwest" : { 
        "lat" : 40.4960439, 
        "lng" : -74.25573489999999 
       } 
      } 
     }, 
     "place_id" : "ChIJOwg_06VPwokRYv534QaPC8g", 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

Dies führt zu falschen Suchergebnissen für unsere Benutzer. Genauer gesagt schalten wir das Feld "types" ab. Da beide Dokumente angeben, dass der Benutzer nach einer "Lokalität" gesucht hat, geben wir immer Ergebnisse für New York City statt New York State zurück, wie angegeben wurde.

Ist das ein Fehler in der Google Maps-API? Müssen wir eine Flagge angeben, um eine strengere Interpretation dessen, was wir senden, zu erzwingen? Andere Ideen?

Hinweis: Wenn Sie diese Suche auf dem Nutzer unter www.google.com/maps ausführen, erhalten Sie den Bundesstaat New York statt NYC. Ich weiß nicht genug darüber, wie diese Seite sich von der API unterscheidet, um zu wissen, was dort passiert.

+0

Geben Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) an, mit dem das Problem reproduziert werden kann. Wie erhalten Sie diese Ergebnisse? Welche Version der API verwenden Sie? Ich bekomme nicht die gleichen Ergebnisse. – MrUpsidown

+0

@MrUpsidown Ich hatte angenommen, dass meine Links eine Möglichkeit zur Reproduktion des Problems bieten. Wir verwenden die Version der API unter maps.googleapis.com/maps-api-v3/api/js/27/12/. Darüber hinaus können Sie jeden Bundesstaat außerhalb von New York unter der folgenden API-Dokumentation von Google testen: https://developers.google.com/maps/documentation/geocoding/intro. Sie sehen dann den Status. Wenn Sie "NY" oder "New York" eingeben, erhalten Sie die Stadt und nicht den Staat zurück. – Necoras

Antwort

1

Ich endete mit dem Google Maps-Team eine issue zu öffnen. Laut ihren Ingenieuren ist dies das erwartete Verhalten. Sie glauben, dass die meisten Nutzer beabsichtigen, "New York City" spezifisch zu sehen, wenn sie nach "New York" anstatt nach dem Staat suchen. Am Ende haben wir die Anfragen unserer Benutzer abgefangen und in unseren Systemen Status-Suchen erzwungen, wenn sie "New York" ohne einen zusätzlichen "City" -Parameter angegeben haben.

Verwandte Themen