Estoy tratando de hacer un programa que cree un mapa de Google basado en la dirección proporcionada por la entrada del usuario. Como no puedo incrustar manualmente un enlace para cada página, ¿cómo puedo hacer que cuando un usuario responda un formulario con la dirección, pueda tomar esa dirección y hacer un mapa de Google? ¿Tengo que convertir la dirección a latitud y longitud y luego hacer eso?
Con respecto a la API de JavaScript de Google Maps, necesita la latitud (lat) y la longitud (lng) para colocar un marcador en el mapa. Para encontrar la latitud y longitud de una dirección, necesita un servicio de geocodificación.
La codificación geográfica es el proceso de convertir direcciones (como "1600 Amphitheatre Parkway, Mountain View, CA") en coordenadas geográficas (como latitud 37.423021 y longitud -122.083739), que puede usar para colocar marcadores en un mapa o posicionar el mapa.
Existen muchos servicios de geocodificación y Google Cloud Platform proporciona uno. Primero, debe activar la API de geocodificación en su cuenta (consulte esta página de la documentación).
Para encontrar una dirección (ejemplo: "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA"), es solo una simple solicitud de obtención a la API con algo como
https://maps.googleapis.com/maps/api/geocode/jsonaddress=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
Puede obtener el lat/lng de la respuesta JSON y usarlo para colocar su marcador en el mapa. Para hacerlo, solo siga las instrucciones de la documentación y podrá colocar su marcador haciendo algo como
let myLatLng = {lat:myLatitude, lng:myLongitude}; new google.maps.Marker({ position: myLatLng, map });
Geocoder()
Como dice @JeremyW
, también puede llamar al servicio de geocodificación utilizando la clase Geocoder
de la API de javascript del mapa de Google (consulte esta publicación ).
let geocoder = new google.maps.Geocoder();
después...
let adress = "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA"; geocoder.geocode( { 'address': address}, function(results, status){ if(status == google.maps.GeocoderStatus.OK){ if(status != google.maps.GeocoderStatus.ZERO_RESULTS){ let marker = new google.maps.Marker({ position: results[0].geometry.location, map: map }); } else{ console.log("No results found"); } } else{ console.log("Geocode was not successful for the following reason: " + status); } }