it-swarm.com.de

Javascript-Geokodierung von Adresse zu Längen- und Breitengrad funktioniert nicht

Ich verwende die folgende Geokodierungsfunktion, um eine Textadresse in Längen- und Breitengrade zu konvertieren, aber sie funktioniert nicht richtig. Die Warnung schreibt "undefiniert".

Kann jemand sagen, was los ist?

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var geocoder = new google.maps.Geocoder();
var address = "new york";

geocoder.geocode( { 'address': address}, function(results, status) {

if (status == google.maps.GeocoderStatus.OK) {
    var latitude = results[0].geometry.location.latitude;
    var longitude = results[0].geometry.location.longitude;
    alert(latitude);
    } 
}); 
</script>
55
Ash

Versuchen Sie stattdessen Folgendes:

var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();

Es ist etwas schwierig, in Googles API zu navigieren, aber hier ist es die entsprechende Dokumentation.

Eine Sache, die ich nicht finden konnte, war, wie ich in die andere Richtung gehen sollte. Von Koordinaten zu einer Adresse. Hier ist der Code, den ich mit upp neded habe. Bitte nicht, dass ich auch jquery benutze.

$.each(results[0].address_components, function(){
    $("#CreateDialog").find('input[name="'+ this.types+'"]').attr('value', this.long_name);
});

Was ich tue, ist die Schleife durch alle zurückgegebenen address_components und testen Sie, ob ihre Typen mit den Namen der Eingabeelemente in einem Formular übereinstimmen. Und wenn ja, setze ich den Wert des Elements auf address_components Wert.
Wenn Sie nur an der gesamten formatierten Adresse interessiert sind, können Sie Beispiel von Google

85
Skadlig

Sie greifen falsch auf die geografische Breite und Länge zu.

Versuchen

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var geocoder = new google.maps.Geocoder();
var address = "new york";

geocoder.geocode( { 'address': address}, function(results, status) {

  if (status == google.maps.GeocoderStatus.OK) {
    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();
    alert(latitude);
  } 
}); 
</script>
46
Dancrumb

Das Skript-Tag für die API wurde kürzlich geändert. Verwenden Sie so etwas, um die Geocoding-API abzufragen und das JSON-Objekt zurückzugewinnen

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/geocode/json?address=THE_ADDRESS_YOU_WANT_TO_GEOCODE&key=YOUR_API_KEY"></script>

Die Adresse könnte so ähnlich sein

1600 + Amphitheatre + Parkway, + Mountain + View, + CA (URI-codiert; Sie sollten es googeln. Sehr nützlich)

oder einfach

1600 Amphitheatre Parkway, Blick auf die Berge, CA.

Durch Eingabe dieser Adresse https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY Im Browser erhalte ich zusammen mit meinem API-Schlüssel ein JSON-Objekt zurück, das das Latitude & enthält. Längengrad für die Stadt Moutain View, CA.

{"results" : [
  {
     "address_components" : [
        {
           "long_name" : "1600",
           "short_name" : "1600",
           "types" : [ "street_number" ]
        },
        {
           "long_name" : "Amphitheatre Parkway",
           "short_name" : "Amphitheatre Pkwy",
           "types" : [ "route" ]
        },
        {
           "long_name" : "Mountain View",
           "short_name" : "Mountain View",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Santa Clara County",
           "short_name" : "Santa Clara County",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "California",
           "short_name" : "CA",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "United States",
           "short_name" : "US",
           "types" : [ "country", "political" ]
        },
        {
           "long_name" : "94043",
           "short_name" : "94043",
           "types" : [ "postal_code" ]
        }
     ],
     "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
     "geometry" : {
        "location" : {
           "lat" : 37.4222556,
           "lng" : -122.0838589
        },
        "location_type" : "ROOFTOP",
        "viewport" : {
           "northeast" : {
              "lat" : 37.4236045802915,
              "lng" : -122.0825099197085
           },
           "southwest" : {
              "lat" : 37.4209066197085,
              "lng" : -122.0852078802915
           }
        }
     },
     "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
     "types" : [ "street_address" ]
  }],"status" : "OK"}

Mit Web-Frameworks wie AngularJS können wir diese Abfragen problemlos durchführen.

3
AllJs