2014-03-28 5 views
10

Ich bin in der Lage, volle Adresse von der aktuellen Breite und Länge zu erhalten. aber wie kann ich nur stadt name von der vollen adresse bekommen. Das ist mein Code.Wie erhält man den Städtenamen aus dem Längen- und Breitengrad in der Telefonlücke?

var geocoder; 
geocoder = new google.maps.Geocoder(); 
var latlng = new google.maps.LatLng(latitude, longitude); 
//alert("Else loop" + latlng); 
geocoder.geocode({ 
    'latLng': latlng 
}, function(results, status) { 
    //alert("Else loop1"); 
    if (status == google.maps.GeocoderStatus.OK) { 
     if (results[0]) { 
      var add = results[0].formatted_address; 
      alert("Full address is: " + add); 
     } else { 
      alert("address not found"); 
     } 
    } else { 
     //document.getElementById("location").innerHTML="Geocoder failed due to: " + status; 
     //alert("Geocoder failed due to: " + status); 
    } 
}); 
+0

möglich Duplikat [Wie erhalte ich Ortsnamen oder die Stadt Breiten- und Längengrade mit?] (Http://stackoverflow.com/questions/15662775/how-do-i-get-location-name-or -city-using-latitude-longitudes) –

Antwort

14
var geocoder; 
geocoder = new google.maps.Geocoder(); 
var latlng = new google.maps.LatLng(latitude, longitude); 

geocoder.geocode(
    {'latLng': latlng}, 
    function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
       if (results[0]) { 
        var add= results[0].formatted_address ; 
        var value=add.split(","); 

        count=value.length; 
        country=value[count-1]; 
        state=value[count-2]; 
        city=value[count-3]; 
        alert("city name is: " + city); 
       } 
       else { 
        alert("address not found"); 
       } 
     } 
     else { 
      alert("Geocoder failed due to: " + status); 
     } 
    } 
); 

Split die vollständige Adresse mit "" als Trennzeichen und erhalten den Namen der Stadt ..

1

Werfen Sie einen Blick auf Google Reverse Geocoding

http://maps.google.com/maps/api/geocode/xml?latlng=YourLatitude,YourLongitude&sensor=false&key=API_KEY 

Das bereits here gefragt wird

2

können Sie Dokumentation finden Sie hier:

https://developers.google.com/maps/documentation/geocoding/?hl=fr#ReverseGeocoding

Aber man kann ohne spliting das Objekt ist die Stadt in der „Ergebnisse“, die Artikel zu sehen.

So können Sie tun:

country=results[0]['address_components'][6].long_name; 
state=results[0]['address_components'][5].long_name; 
city=results[0]['address_components'][4].long_name; 

Seien Sie vorsichtig, die Zahlen "4,5,6" durch das Land ändern. So Safier es so zu testen:

Getting street,city and country by reverse geocoding using google

5

Sauber Beispiel zu bekommen Lage von lat und lang und Parsen Ergebnis. basierend auf Google Reverse Geocoding

var geocodingAPI = "https://maps.googleapis.com/maps/api/geocode/json?latlng=23.714224,78.961452&key=YOUR_SERVER_API_KEY"; 

$.getJSON(geocodingAPI, function (json) { 
    if (json.status == "OK") { 
     //Check result 0 
     var result = json.results[0]; 
     //look for locality tag and administrative_area_level_1 
     var city = ""; 
     var state = ""; 
     for (var i = 0, len = result.address_components.length; i < len; i++) { 
      var ac = result.address_components[i]; 
      if (ac.types.indexOf("administrative_area_level_1") >= 0) state = ac.short_name; 
     } 
     if (state != '') { 
      console.log("Hello to you out there in " + city + ", " + state + "!"); 
     } 
    } 

}); 
+0

Wie findest du Stadt in diesem Code? Ich denke, es sollte durch administrative_area_level_2 sein – gagangupt16

1

So mache ich es. Hatte Angst, ein Komma-Trennzeichen zu verwenden.

function ReverseGeoToCity(lat, lng, callback) { 
    var latlng = new google.maps.LatLng(lat, lng); 
    geocoder.geocode({'latLng': latlng}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     if (results[1]) { 
      var properName = ", "; 

      for(i=0; i<results[1].address_components.length; i++){ 
       if (results[1].address_components[i].types[0] == "locality") 
        properName = results[1].address_components[i].short_name + properName; 
       if (results[1].address_components[i].types[0] == "administrative_area_level_1") 
        properName += results[1].address_components[i].short_name; 
      } 

      callback(properName); 
     } else { 
      alert('No results found'); 
     } 
    } else { 
     alert('Geocoder failed due to: ' + status); 
    } 
    }); 
} 
Verwandte Themen