2017-11-12 3 views
0

Ich denke, das ist eine neue Frage, und ich habe einige Beispielcode.Google Places Autocomplete API get Stadt und Region (JavaScript)

Der Code für Google Places API zur automatischen Vervollständigung ist:

 function initialize() { 
     var input = document.getElementById('searchField'); 
     var options = { 
     componentRestrictions: { 
     country: ['uk', 'ie'] 
     } 
     }; 
     var autocomplete = new google.maps.places.Autocomplete(input, options); 
     google.maps.event.addListener(autocomplete, 'place_changed', 
     function() { 
     var place = autocomplete.getPlace(); 
     var placeStreet = autocomplete.getPlace()[0]; 
     var place_ = place.name; 
     var lat_ = place.geometry.location.lat(); 
     var long_ = place.geometry.location.lng(); 
     alert(place + ", street: " + placeStreet + ", " + place_ + ", " + 
     lat_ + ", " + long_); 

     }); 
    } 

Wie erhalte ich die Stadt oder Region oder eines Landes. Da ich aus Großbritannien komme, muss ich Stadt wie London, Region oder Grafschaft = Middlesex und Land = Vereinigtes Königreich finden. Gibt es das überhaupt, um das zu tun? und wie finde ich den Ausdruck von getPlace() wie bekomme ich das Javascript-Objekt ausgedruckt.

Vielen Dank im Voraus

*** EDIT JSON.stringify (autocomplete.getPlaces()), um das Objekt ausdruckt aber wie extrahieren ich die Stadt, Region, Land usw.

*** EDIT In Meine Autocompte mein Json-Objekt druckt Objekte in verschiedenen Ordnungen, so dass die Suche nach dem 3. Objekt Postort oder Verwaltungsbereich sein wird. Wie suche ich nach Typ und bekomme den Typ Land und das Land oder tippe postal_town und town ein. Meine json Ausgänge sind:

1)

 { 
     "address_components": [ 
     { 
     "long_name": "12-20", 
     "short_name": "12-20", 
     "types": [ 
     "street_number" 
     ] 
     }, 
     { 
     "long_name": "Wood Street", 
     "short_name": "Wood St", 
     "types": [ 
     "route" 
     ] 
     }, 
     { 
     "long_name": "Walthamstow", 
     "short_name": "Walthamstow", 
     "types": [ 
     "neighborhood", 
     "political" 
     ] 
    }, 
    { 
     "long_name": "London", 
     "short_name": "London", 
     "types": [ 
     "postal_town" 
     ] 
     }, etc 

2)

{ 
    "address_components": [ 
    { 
    "long_name": "London", 
     "short_name": "London", 
    "types": [ 
     "locality", 
     "political" 
    ] 
    }, 
    { 
    "long_name": "London", 
    "short_name": "London", 
    "types": [ 
    "postal_town" 
    ] 
    }, 
    { 
     "long_name": "Greater London", 
     "short_name": "Greater London", 
     " types": [ 
     "administrative_area_level_2", 
     "political" 
    ] 
    }, 

Antwort

1

Ich bin nicht sicher, was Sie von der Stadt und der Region gemeint, aber Sie können die folgende versuchen, wie ich Stadt tat zu bekommen und Zustand einer ausgewählten Stelle

für Stadt können Sie versuchen: locality oder sublocality_level_1 property.If locality kehrt kein Ergebnis verwenden sublocality_level_1, Ich versuche, legen nahe, beide

und Region können Sie versuchen: administrative_area_level_1

und für Landnutzung: country

Hier ist die API-Dokumentation: place autocomplete api documentation

Update:

Hier ist, was Sie sollten tun:

1.First sollten Sie die address_component von Antwort

var place = autocomplete.getPlace().address_components 

    //it will give you an array of objects which has a type property.This type property holds different components of your address.Loop through it to get your desired component 

    address_component = [ 
     { 
     "long_name" : "Australia", 
     "short_name": "Aus", 
     "types" : ["country"] 
     }, 
     { 
     "long_name" : "Pyrmont", 
     "short_name" : "Pyrmont", 
     "types" : [ "locality", "political" ] 
     }, 
     { 
     "long_name" : "Council of the City of Sydney", 
     "short_name" : "Sydney", 
     "types" : [ "administrative_area_level_2", "political" ] 
     }, 
     { 
     "long_name" : "New South Wales", 
     "short_name" : "NSW", 
     "types" : [ "administrative_area_level_1", "political" ] 
     } 

]

bekommen Sie eine Schleife durch und die Typen, die Sie benötigen und erhalten short_name oder lange _name und zeigen Sie es an die screen.If Sie das verstehen finden Du bist gut zu gehen. Wenn du mich nicht fragen kannst.Überprüfen Sie alle Komponenten verfügbar Place Details

Code:

eine Komponente Karte erklären, die die Komponenten aufnehmen werden Sie nur

var componentMap = { 
     country: 'country', 
     locality: 'locality', 
     administrative_area_level_1 : 'administrative_area_level_1', 
    }; 

    for(var i = 0; i < place.length; i++){ 

     var types = place[i].types; // get types array of each component 

     for(var j = 0; j < types.length; j++){ // loop through the types array of each component as types is an array and same thing can be indicated by different name.As you can see in the json object above 

       var component_type = types[j]; 

       // check if this type is in your component map.If so that means you want this component 

       if(componentMap.hasOwnProperty(component_type)){ 


       console.log(place[i]['long_name']); 

       } 
     } 
    } 
+0

Hallo AL-Zami verwenden wollen, so würde ich Verwenden Sie autocomplete.getPlaces() ["Lokalität"]. Soz wirklich neu dazu. – KDJ

+0

Wie würde ich zum Beispiel das Land bekommen. Wie würde ich durch das JSON-Objekt navigieren? – KDJ

+0

überprüfen Sie meine aktualisierte Antwort. Fragen Sie mich, ob es irgendwelche Verwirrung gibt –

Verwandte Themen