2016-12-10 4 views
2

Ich benutze dieses Skript:Wie lande ich von google maps api?

var place = autocomplete.getPlace(); 
latitude = place.geometry.location.lat(); 
longitude = place.geometry.location.lng(); 

street_number = place.address_components[0].long_name; 
route = place.address_components[1].long_name; 
locality = place.address_components[2].long_name; 
administrative_area_level_1 = place.address_components[3].long_name; 
country = place.address_components[5].long_name; 
postal_code = place.address_components[6].long_name; 

Welche wenn Benutzer in vollständiger Adresse funktioniert gut. Wenn jedoch der Benutzer NUR Stadt oder Stadt eingibt, ist der Länderwert nicht vorhanden.address_components [5] aber in place.address_components [2]:

Wie kann man wissen, welches Feld zum Index des zurückgegebenen Arrays passt

Antwort

8

Sie sollten sich nicht auf den Index des Elements in place.address_components array verlassen. Stattdessen müssen Sie das Feld "Typen" analysieren, um die entsprechende Adresskomponente für das Land zu finden.

Es kann mit Array.prototype.filter() und Array.prototype.includes() Funktionen durchgeführt werden.

var filtered_array = place.address_components.filter(function(address_component){ 
    return address_component.types.includes("country"); 
}); 
var country = filtered_array.length ? filtered_array[0].long_name: ""; 
+0

Ich liebe diesen Dank, ich habe den Namen der Region anstelle von Ländercode mit diesem erhalten es gibt keinen Weg für diese Verwirrung mehr. @xomena, ich würde gerne wissen, ob Google API irgendwann das Ergebnis ohne die Länderinformationen zurückgeben kann. – aidonsnous

+0

Ja, Google API gibt das Land in umstrittenen Gebieten nicht zurück. Sehen Sie sich das Beispiel https://google-developers.appspot.com/maps/documentation/utils/geocoder/#place_id%3DEiUxMyBNb3JzJ2thIFN0cmVldCwgU2ltZmVyb3BvbCwgQ3JpbWVh an – xomena