2012-05-16 7 views
7

Ich habe den folgenden jQuery-Code, der gut mit der Stadtliste für das ausgewählte Land funktioniert.Google Places JavaScript Autocomplete: Kann ich das Land aus dem Ortsnamen entfernen?

var city; var place; 

$('#city').on('focus',function(){ 
    input = this, options = { 
     types: ['(cities)'], 
     componentRestrictions: { 
      country: $('#country option:selected').val() 
      } 
    }; 
    city = new google.maps.places.Autocomplete(input, options); 
    google.maps.event.addListener(city, 'place_changed', function() { 
     place = city.getPlace(); 
     $(input).val(place.address_components[0].long_name); 
    }) 
}) 

Grundsätzlich, sobald die Person den Ort auswählt, ersetzt er den Wert in das Eingabefeld mit der „Stadt“ Wert ohne Land.

Es sieht ein wenig dumm City, Country im Dropdown-Menü mit, wenn der Benutzer bereits ein Land ausgewählt hat, so jemand nicht wissen, ob es möglich ist, nur die Stadt Namen angezeigt werden, wenn Sie einen componentRestrictions Wert die Ergebnisse in einem definierte Einschränkung Land?

finde ich meine aktuelle Methode davon einstellen, sobald die Auswahl ein wenig ... Müll, um wirklich gemacht wurde ...

+0

Ich habe Ihre Frage mehrmals gelesen und ich habe nicht das Gefühl, dass ich vollständig verstehe, was Sie beschreiben. Ich denke, wenn Sie etwas von dem Markup hinzufügen würden, würde das der Frage einen gewissen Kontext geben und jedem helfen, es zu verstehen. Oder vielleicht einen Link zu Ihrer Seite oder ein Beispiel auf jsFiddle? –

+0

Können Sie im Allgemeinen bearbeiten, was im Drop-down-Menü enthalten ist? Ich meine, wenn der Name des Landes bekannt ist, "ersetze" es aus dem angezeigten Dropdown-Eintrag. –

+0

Das Dropdown wird von Google generiert. auch eine Geige des Codes würde nicht funktionieren und ein Link zu meiner Seite wäre keine Hilfe, was auch immer, denn sobald das Problem behoben ist, würde es nicht auf der Seite erscheinen und die Frage nutzlos machen, sobald sie für irgendeinen anderen beantwortet wurde Leute, die so etwas machen wollen. –

Antwort

3

Die kurze Antwort lautet: der Antwortinhalt im Autocomplete von Google kontrolliert wird (Sie erwähnen dies in einem Ihrer Kommentare) und die Autocompleteapi-doc bietet keine Möglichkeit, den Antworttext anzupassen, der angezeigt wird, außer Ändern des Platzhaltertextesdev-guide. Die Lösung, die Sie verwenden, ist über die beste Option, die Sie haben (und ist ein wenig reaktiv, aber ich weiß nicht, ob es wirklich "Quatsch").

Wenn Sie mit diesem Ansatz nicht zufrieden sind, können Sie einfach nur Ihren eigenen Eingabebereich erstellen und die gesamte Anfrage selbst steuern. Sie können die Places-Bibliothek dev-guide direkt verwenden und die vollständige Kontrolle über alles, was angezeigt wird, übernehmen.

1

Ich warte 100 Millisekunden, und ersetzen Sie dann das Textfeld mit dem Inhalt, den ich möchte.

Außer in meinem Fall möchte ich eine leere Box, sondern ein einzelnes Leerzeichen einfügen.

10

Beim Aufruf von Google-API, geben Sie "Region" Attribut:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false&key=your_key&language=fr&region=FR"></script> 

Dann, wenn Sie ein Autocomplete Objekt zu erstellen, geben Sie das Land, in dem componentRestriction Attribute, so dass er die Region widerspiegelt Sie angegeben:

 

    new google.maps.places.Autocomplete(
     $("#my-input-field").get(0), 
     { 
      componentRestrictions: {country: "fr"}, 
      types: ["(regions)"] 
     } 
    ); 

+0

Ist dies eine neue Funktion für Google Maps API? Ich habe diese Frage vor fast zwei Jahren gestellt! –

+2

Leider funktioniert dies nicht für die USA. Aber anderen scheint es gut zu gehen. –

+0

Arbeitet mit 'region = US' für mich! – rebello95

2

Auch Sie können sich selbst durch CSS - Verstecken der letzten span (= Zustand) in Autocomplete-Element helfen.

.pac-item > span:last-child { 
    display: none; 
} 
+1

Da dies das Land und den Staat verbirgt, ist dies keine Lösung in den vielen Fällen, in denen zahlreiche Staaten eine Stadt mit dem gleichen Namen haben. Zum Beispiel haben in den USA vier Staaten eine Stadt namens Independence. – Reid