1

Ich versuche den Google Maps-API-Dienst zu verwenden, damit meine Website-Besucher ihre Adresse in einem Feld eingeben können. Sobald er eine übereinstimmende Adresse auswählt, möchte ich die latitude und longitude Informationen über die angegebene Adresse erhalten.Wie kann ich den Breiten- und Längengrad des ausgewählten Ortes mit Google Maps API ermitteln?

Mit dem Code in der API documentation, bekam ich eine Karte und ein Textfeld auf meiner Website. Sobald Google jedoch eine übereinstimmende Adresse gefunden hat, muss ich nur die Informationen latitude und longitude für die ausgewählte Adresse abrufen.

Hier ist die Funktion, die Karte

function initMap() { 

    var mapElement = document.getElementById('map'); 

    var map = new google.maps.Map(mapElement, { 
     center: { 
     lat: -34.397, 
     lng: 150.644 
     }, 
     zoom: 6 
    }); 

    // Create the search box and link it to the UI element. 
    var input = document.getElementById('pac-input'); 
    var searchBox = new google.maps.places.SearchBox(input); 
    map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 

    var infowindow = new google.maps.InfoWindow(); 
    var marker = new google.maps.Marker({ 
     map: map 
    }); 

    // Bias the SearchBox results towards current map's viewport. 
    map.addListener('bounds_changed', function() { 
     searchBox.setBounds(map.getBounds()); 
    }); 

    var markers = []; 
    // Listen for the event fired when the user selects a prediction and retrieve 
    // more details for that place. 
    searchBox.addListener('places_changed', function() { 

     var places = searchBox.getPlaces(); 

     console.log(places); 
     if (places.length == 0) { 
     return; 
     } 

     // Clear out the old markers. 
     markers.forEach(function(marker) { 
     marker.setMap(null); 
     }); 
     markers = []; 

     // For each place, get the icon, name and location. 
     var bounds = new google.maps.LatLngBounds(); 
     places.forEach(function(place) { 

     if (!place.geometry) { 
      console.log("Returned place contains no geometry"); 
      return; 
     } 
     /* 
     var icon = { 
      url: place.icon, 
      size: new google.maps.Size(71, 71), 
      origin: new google.maps.Point(0, 0), 
      anchor: new google.maps.Point(17, 34), 
      scaledSize: new google.maps.Size(25, 25) 
     }; 
     */ 


     // Create a marker for each place. 
     markers.push(new google.maps.Marker({ 
      map: map, 
      //icon: icon, 
      title: place.name, 
      position: place.geometry.location 
     })); 

     //coords.latitude 

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

     console.log(latitude, longitude); 

     if (place.geometry.viewport) { 
      // Only geocodes have viewport. 
      bounds.union(place.geometry.viewport); 
     } else { 
      bounds.extend(place.geometry.location); 
     } 

     }); 

     map.fitBounds(bounds); 

    }); 


} 

Die folgenden Codezeilen gab mir die Informationen initialisieren, die ich suche. Es scheint jedoch, dass es mehr als einmal angezeigt wird (möglicherweise zeigt es die Informationen für mehrere Adressen an). Wie bekomme ich die latitude und longitude Info nur eine Adresse?

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

Ich versuchte, ein Klick Zuhörer das Hinzufügen, wo ich die Informationen einer der lecken Ereignis wie dieses jedoch

map.addListener("click", function (event) { 
     var lat = event.latLng.lat(); 
     var lng = event.latLng.lng(); 

     console.log(lat, lng); 
    }); 

greifen kann, gibt dies mir die latitude und longitude der Ort, wo ich auf die Karte klicken , nicht die Adresse, die ich aus dem Textfeld nach der automatischen Vervollständigung schlug die übereinstimmenden Adressen

+0

Die 'SearchBox.getPlaces()' Methode gibt eine Reihe von passenden Stellen. Bitte geben Sie ein Beispiel an, wo Sie eine Adresse eingeben und mehrere Ergebnisse erhalten. Vielleicht sollten Sie [Autovervollständigung] (https://developers.google.com/maps/documentation/javascript/reference#Autocomplete) anstelle von [SearchBox] verwenden (https://developers.google.com/maps/documentation/javascript/ Referenz # SearchBox) – geocodezip

Antwort

0

Ich bin mir sicher, es gibt einen einfacheren Weg, aber ich maps.google.com und mit der rechten Maustaste klicken, wo auch immer ich die Koordinaten finden möchten für und wählen Sie was ist hier?, dann erscheint der Längen- und Breitengrad am unteren Ende der Karte.

+0

Ich muss diese Informationen von einer ausgewählten Adresse erhalten. Wenn ich eine Adresse eintippe, zeigt mir Google eine Auswahl an. Aus der Auswahl würde ich eine Adresse auswählen. Ich möchte die Informationen von dieser Adresse erhalten. – Jaylen

0

Mit der Google-API können Sie einfach eine AJAX-Anfrage senden, Sie benötigen keine Karte auf Ihrer Seite, um Koordinaten zu erhalten. Sieh dir das an!

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

var responseAsObject; 
$("#div").load("url", function(response, status, xhr) { 
responseAsObject = $.parseJSON(response); 
}); 
var long = responseAsObject.results.geometry.location.lng; 
var lat = responseAsObject.results.geometry.location.lat; 
+0

Sie können die Karte verwenden, um die Adresse in ihrer für Menschen lesbaren Form zu erhalten und einfach die API von Google verwenden, um die Koordinaten in einem JSON-Format zu erhalten! –

Verwandte Themen