2011-01-13 1 views
1

Ich habe Probleme, dem Google Maps-API mitzuteilen, dass die Ergebnisse des Geocoding-Service auf eine bestimmte Region beschränkt werden sollen.Google Maps-API verwendet keinen Regionshinweis

Ein einfaches Beispiel, das Problem reproduzieren ist hier: http://jsfiddle.net/pqZGr/

Der JavaScript-Code ist wirklich einfach:

$(document).ready(function() { 
    var geocoder = new google.maps.Geocoder(); 
    $("#name").autocomplete({ 
     source: function (request, response) { 
      geocoder.geocode({ 'address': request.term, 'region': 'it' }, function (results, status) { 
       response($.map(results, function (item) { 
        return { 
         value: item.formatted_address 
        } 
       })); 
      }) 
     } 
    }); 
}); 

ich auch die API-URL als http://maps.google.com/maps/api/js?region=it&language=it&sensor=false neben den 'region': 'it' in der Anforderung angegeben.

Das Problem ist, die zurückgegebenen Adressen von Google sind nicht eingeschränkt (noch angedeutet) nach Italien

Zum Beispiel, wenn Sie mil (die begininning von Milano) Ich suche erhalten Circondario di Miltenberg, Germania und Milion, Alemdar Mh., 34122 Istanbul/Provincia di Istanbul, Turchia und reka Mil', Sacha-Jacuzia, Russia.

Es gibt Ergebnisse (auch, nur drei?) Aus der ganzen Welt, ein Nichts aus Italien (auch wenn es mehrere Städte gibt, die mil entsprechen).

Was mache ich falsch?

Als Randnotiz, ist es möglich, die Suche nur auf die Städte und nicht auf vollständige Adressen zu beschränken?

Vielen Dank im Voraus.

Antwort

0

Es klingt, als ob Sie die Google Places-Autocomplete-API standalone oder built in wirklich zum Google Maps-API verwenden sollten.

Der Geocodierungsdienst ist nicht für Autocomplete-Abfragen konzipiert und gibt die gesuchten Ergebnisse nicht zurück. Der Region-Parameter ist ein Hinweis wie du gesagt hast, aber es ist keine Einschränkung. Wenn es also kein passendes "Mil" in Italien gibt, oder wo es anderswo eine viel bessere Übereinstimmung gibt, bekommst du diese Ergebnisse.

Es gibt keine Möglichkeit, die Ergebnisse nur Städte zu beschränken.

0

Wenn Sie Google Geocoder mit der jQuery UI verwenden, können Sie eine Zeile in ui.geo_autocomplete.js, Zeile 46, bearbeiten und Ihre Region hinzufügen. Es ist nicht 100% genau, aber die Anzahl der gefundenen Adressen reduzieren:

this.options._geocoder.geocode({'address': _address}, function(_results, _status) 

Ersetzen durch:

this.options._geocoder.geocode({'address': _address + ' YOUR_REGION_HERE'}, function(_results, _status) 
Verwandte Themen