2013-06-22 8 views
6

Sehr einfache Frage, die ich nicht richtig zur Zeit scheinen kann, zu erhalten, Google spricht über Region stützen sich hier:Google Region Blasing in JQuery Scripting

https://developers.google.com/maps/documentation/geocoding/#RegionCodes

Es verwendet die folgenden Parameter:

region: 

Dies ist der Code im Umgang mit: http://jsfiddle.net/spadez/Jfdbz/19/

Meine Frage ist, wie meine ich pass Variable "ctryiso" an diesen Parameter in meinem Skript? Wenn ich es versuche, ändert sich nichts, also wenn ctryiso auf US eingestellt ist und ich in London tippe, geocodiert es immer noch London, England. Ich habe gehört, dass es ein bisschen unzuverlässig ist, aber ich denke nicht, dass meine Implementierung korrekt ist.

Jede Hilfe würde sehr geschätzt werden.

+1

Ihre Geige isin't Öffnung – Tushar

+1

Gerade FYI: Ich bin nicht in der Lage https://jsfiddle.net/spadez/Jfdbz/19/ zugreifen (HTTPS) - aber ich in der Lage http zugreifen: // jsfiddle.net/spadez/Jfdbz/19/ (HTTP) –

+0

Ich bekomme die Koordinaten für London, England, wenn ich einfach "London" eintippe. Aber alle Vorschläge beziehen sich auf Standorte in den USA. –

Antwort

2

Normalerweise wo Sie haben:

geocoder.geocode({ 
    address: query 
} 

Sie region einfach so passieren sollte (wie Sie bereits erwähnt):

geocoder.geocode({ 
    address: query, 
    region: SOME_VARIABLE_WITH_REGION_CODE 
} 

Und sollte es funktionieren, obwohl ... es scheint es isn Es gibt immer mehr Menschen, die das gleiche Problem haben.

Die (hässlich) Lösung ist es zu adressieren hinzuzufügen, wie folgt aus:

geocoder.geocode({ 
    address: query + ', ' + SOME_VARIABLE_WITH_REGION_CODE 
} 

Ich habe es getestet und es funktioniert, aber wie ich schon sagte - es ist nicht das „nett“ weder richtige Weg um es zu tun - es ist nur Workaround.

Wie wir hier sehen können: https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#GeocoderRequest

Sie address passieren kann, bounds, location und region. Da Region nicht zu funktionieren scheint, ist, ich würde versuchen bounds, indem man zuerst immer Koordinaten für die gewünschte Region zu verwenden:

https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#LatLngBounds

+0

Der Hack zum Hinzufügen des Regionscodes zu Ihrer Adressabfrage funktioniert normalerweise, aber eine bessere Möglichkeit, auf ein Land zu beschränken (vs Bias), ist die Verwendung von GeocoderComponentRestrictions (siehe meine Antwort hier für Details). – jlivni

0
  • Sie können versuchen, Hinzufügen der Region Parameter als Query-String, wenn Sie Karte APIs
    Last google, obwohl standardmäßig sollte es sein US

    https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&region=US 
    
  • Sie können auch anhängen „USA“ an die Adresse, die Sie an den Geocoder passieren - das funktioniert wirklich gut, aber es ist hässlich.

  • Sie können auch alle Ergebnisse zurückgeben und sie analysieren und nur anzeigen, die sich im gewünschten Land befinden. In den meisten Fällen werden Sie tun müssen, da es mehrere Standorte mit dem gleichen Namen in den meisten Ländern gibt .... Dies ist die bevorzugte Methode , als ob jemand in London, USA tippen Sie London, KY und London, OH und der Benutzer/Sie müssen noch entscheiden, welche es ist sie wollen ...

0

Wie in einer anderen Antwort erwähnt, können Sie die region in Ihrem geocode Anfrage Bias (nicht beschränken) das Ergebnis.

In diesem speziellen Fall wird jedoch London in Großbritannien immer noch als ein besseres Ergebnis als London in den USA angesehen. Deshalb können Sie das Ergebnis unter Verwendung der GeocoderComponentRestrictions wie in der Geocoding Service docs

beschrieben zusätzlich einschränken. Ich habe eine fiddle gemacht, die diese Art der Filterung zeigt, indem die Ergebnisse in den USA verlangt werden.

Sie werden feststellen, dass das Ergebnis in London, USA, aber wenn Sie die GeocoderComponentRestrictions aus dem Geige-Code entfernen, ist das erste Ergebnis jetzt in London, trotz der Region Bias.

Es ist jedoch immer noch wichtig zu beachten, dass Bias funktioniert. Wenn Sie beispielsweise die Region in "ES" und die Adresse in "Toledo" ändern, lautet das Ergebnis in Spanien. Wenn Sie die Verzerrung entfernen, wird standardmäßig Toledo USA verwendet.

tl; dr Verwendung region zu Bias, und die GeocoderComponentRestrictions zu beschränken.

0
function getLatLong(address){ 
     var geo = new google.maps.Geocoder; 

     geo.geocode({'address':address},function(results, status){ 
       if (status == google.maps.GeocoderStatus.OK) { 
       return results[0].geometry.location; 
       } else { 
       alert("Geocode was not successful for the following reason: " + status); 
       } 

     }); 

    } 
    I am unable to understand your exact need but, I hope it will help you and if not then please tell me your exact need in short way  
+0

auch in Ihrem Code verwenden: if ((ctrysio! = '') && (ctrysio! = Null) && (ctrysio! = "Undefined")) hoffe, dass Ihr Code auch mit dieser – Anup

+0

https://developers.google.com funktioniert/maps/faq # geocoder_exists – Anup