0

Wir verwenden diese API schon seit einiger Zeit. Wir konnten sehen, dass Adressen aus dem Vereinigten Königreich zurückgegeben wurden & und somit die Geocodierungs-URL so geändert wurde, dass sie nur auf Großbritannien beschränkt war.Google Geocoding API gibt immer einen Breitengrad vom Zentrum Großbritanniens zurück, egal welchen Suchbegriff wir verwenden

http://maps.googleapis.com/maps/api/geocode/xml?latLng=54,-2&address=gdfgsdgsd,GB

http://maps.googleapis.com/maps/api/geocode/xml?latLng=54,-2&address=gdfgsdgsd,GB& Komponenten = Land: GB

Bitte überprüfen Sie die Ergebnisse für beide der oben genannten URL. Die erste URL gibt ZERO_RESULTS zurück, was korrekt ist. Die zweite gibt immer einen langen Lat vom Zentrum von UK zurück, egal welchen Suchbegriff wir verwenden.

Sie können auch versuchen, den Wert für 'Adresse' zu ersetzen, die Frage zu wiederholen: 452.376.452.334,^$%^$%^$%, 458.352.462.354^$%^$%^

+0

Warum schließen Sie sowohl die Parameter latLng (nur geocodieren in umgekehrter Richtung) als auch Adresse (nur Geocodierung) ein? – geocodezip

+0

[Wenn Sie eine "echte" (existierende) Adresse (wie London) verwenden, funktioniert sie (gibt einen anderen Ort als das Zentrum von Großbritannien zurück)] (http://maps.googleapis.com/maps/api/geocode/ xml? latLng = 54, -2 & Adresse = London, GB & Komponenten = Land: GB) – geocodezip

+0

Entfernen latLng Parameter oder Suche nach einer 'realen' Adresse löst nicht das Problem, das ich habe. Die Postleitzahl/Ort wird vom Benutzer in ein Textfeld eingegeben, und dann rufen wir Google auf, um zu georeferenzieren. Es hat gut funktioniert, bis wir die Parameter components = country: UK eingeführt haben. Aber wir mussten dies einführen, so dass nicht-britische Ergebnisse nicht zurückgegeben werden. – akimran82

Antwort

2

Gemäß dem Google Geocoding API über Component Filtering

eine Abfrage ein Komponentenfilter enthält, wird nur die Geokodierung Ergebnisse angezeigt, die den Filterkriterien entsprechen. Wenn keine Übereinstimmungen gefunden werden, gibt der Geocoder ein Ergebnis zurück, das dem Filter selbst entspricht.

Anfrage:

https://maps.googleapis.com/maps/api/geocode/json?address=someincomprehesibleaddress&components=administrative_area:TX|country:US&key=YOUR_API_KEY

{ 
"results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Texas", 
       "short_name" : "TX", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Texas, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 36.5007041, 
        "lng" : -93.5080389 
       }, 
       "southwest" : { 
        "lat" : 25.8371638, 
        "lng" : -106.6456461 
       } 
      }, 
      "location" : { 
       "lat" : 31.9685988, 
       "lng" : -99.9018131 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 36.5015087, 
        "lng" : -93.5080389 
       }, 
       "southwest" : { 
        "lat" : 25.8371638, 
        "lng" : -106.6456461 
       } 
      } 
     }, 
     "partial_match" : true, 
     "place_id" : "ChIJSTKCCzZwQIYRPN4IGI8c6xY", 
     "types" : [ "administrative_area_level_1", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

Component-Filterung wird wieder eine ZERO_RESULTS Antwort nur, wenn Sie Filter zur Verfügung stellen, die sich gegenseitig ausschließen.

Anfrage:

https://maps.googleapis.com/maps/api/geocode/json?components=administrative_area:TX|country:FR&key=YOUR_API_KEY

{ 
    "results" : [], 
    "status" : "ZERO_RESULTS" 
} 
+0

Ja. Aber das löst das Problem nicht.Ich habe nur die Adresse (PLZ/Ort), die der Benutzer eingibt. Auf dieser Grundlage muss ich mich an einen Standort in Großbritannien orientieren, wenn es sich um einen gültigen Begriff handelt. Wenn nicht, muss ich eine Fehlermeldung "Location not found" anzeigen. Jetzt, wo es immer Ergebnisse liefert, kann ich das nicht tun. Nur so kann ich jetzt prüfen, ob das Ergebnis lat das Zentrum von UK ist [55.3780510, -3.4359730]. Wenn ja, dann betrachte es als "Standort nicht gefunden". Wenn Sie einen anderen Weg haben, lassen Sie es mich wissen – akimran82

+0

Da dies das inhärente Verhalten des Geocode-Dienstes ist, bezweifle ich, dass es eine Lösung dafür gibt. Was Sie vorgeschlagen haben, ist eine der Problemumgehungen. Die andere Problemumgehung besteht darin, ohne den Komponentenfilter so zu geocodieren, wie Sie es früher getan haben. Wenn ein Ergebnis zurückgegeben wird, überprüfen Sie das Land in der Adresskomponente. Wenn es sich außerhalb Großbritanniens oder Großbritanniens befindet, können Sie die Fehlermeldung "Standort nicht gefunden" anzeigen. – Joyson

1

Sieht aus wie ich einen Weg, dieses Problem zu beheben gefunden haben. Das URL-Muster ich jetzt verwenden ist: http://maps.googleapis.com/maps/api/geocode/xml?address=Leeds,UK|GB

Die unten URL gibt jetzt ZERO_RESULTS http://maps.googleapis.com/maps/api/geocode/xml?address=gdfgsdgsd,UK|GB

auch als Joyson vorgeschlagen, wir auch für das Land zurückgeführt & Display eine Fehlermeldung überprüfen konnte.

+0

Beide API-Anfragen sind fehlerhaft. Soweit es die API betrifft, ist "UK | GB" das gleiche wie "UK GB" und das ist in einer Adresse nicht sinnvoll. Bei der Verwendung von "latlng" und "address" wird latlng ignoriert, weshalb address = gdfgsdgsd (was "garbage" ist) keine Ergebnisse liefert. – miguev

+0

Ich habe jetzt die zweite URL bearbeitet. Wenn Sie die folgende URL versuchen, erhalten Sie Ergebnisse aus Indien http://maps.googleapis.com/maps/api/geocode/xml?address=3123123,GB Aber wenn Sie die aktualisierte URL wie unten angegeben verwenden, erhalten Sie UK nur Ergebnisse http://maps.googleapis.com/maps/api/geocode/xml?address=3123123,UK|GB – akimran82

+0

Keine Abfrage beschränkt Ergebnisse auf UK, sie auf Verzerrung, müssen Sie den Parameter Komponenten verwenden, um Ergebnisse einschränken Außerdem ist der korrekte Ländercode für GB tatsächlich GB (yeah) und das Setzen von beiden mit der Pipe ist für eine schlecht geformte Anfrage verantwortlich. – miguev

Verwandte Themen