Ruta Google Maps desde formulario

17/Oct/2015 Google , 2 Comentarios

En este ejemplo vamos a ver como podemos crear una Ruta Google Maps desde formulario. Es decir vamos a presentar al usuario un formulario dónde podrá elegir el origen y el destino y mediante esos datos le vamos a pintar la ruta en un mapa de Google Maps mediante su API.

Lo primero que te recomendaría que le echases un ojo a los artículos sobre uso del API de Google Maps y si vas a empezar que realizases el ejemplo de Cargar un Mapa de Google Maps.

Pero empecemos a crear el ejemplo de cargar una ruta Google Maps desde formulario. Lo primero que vamos a hacer es poner el área del mapa y de la ruta en una página web.

  1. <div id="map_canvas" style="width: 50%; float:left;"></div>
  2. <div id="directionsPanel" style="width: 50%;float:left;"></div>

Como podéis observar hemos dividido la pantalla en dos partes, a la izquierda irá el mapa y a la derecha la explicación de la ruta.

Ahora vamos a cargar Google Maps. Y además posicionaremos un mapa por defecto. Lo primero será cargar la librería de Google Maps.

  1. <script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

Y luego inicializar el mapa.

  1. var map;
  2.  
  3. function initialize(){
  4. var mapOptions = {
  5. zoom: 12,
  6. center: new google.maps.LatLng(40.674389,-4.700432),
  7. mapTypeId: google.maps.MapTypeId.ROADMAP
  8. };
  9.  
  10. map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
  11. }
  12.  
  13. google.maps.event.addDomListener(window, 'load', initialize);

Vemos como utilizando el objeto Map hemos cargado el mapa sobre la capa que habíamos definido como map_canvas. En este caso no nos hemos complicado mucho la vida y hemos puesto un punto concreto del mapa. Pero si quieres hacerlo más cercano al usuario puedes ponerle su ubicación actual, para ello revisa el ejemplo Geolocalizando a un usuario con Google Maps y HTML5.

Ahora vamos a crear un formulario con dos campos, origen y destino, y un botón para calcular la ruta.

  1. <form id="ruta">
  2. <label>Origen:</label><input type="text" id="origen" name="origen"><br/>
  3. <label>Destino:</label><input type="text" id="destino" name="destino"><br/>
  4. <button id="calcularRuta">Calcular Ruta</button>
  5. </form>

Sobre el botón vamos a crear un escuchador de eventos mediante el método .addEventListener(). Básicamente para que se lance el cálculo de la ruta ante un click del botón.

  1. var boton = document.getElementById("calcularRuta");
  2.  
  3. boton.addEventListener("click", function(ev){
  4.  
  5. var origen = document.getElementById("origen").value;
  6. var destino = document.getElementById("destino").value;
  7.  
  8. cargarRuta(origen,destino);
  9.  
  10. ev.preventDefault();
  11.  
  12. },false);
  13.  

Vemos que utilizamos el método .preventDefault() para evitar que se siga ejecutando el comportamiento normal del click y únicamente haga lo que determinemos en la función cargarRuta(). A esta función cargarRuta() se le pasan los valores de los campos del formulario a los que hemos accedido mediante el método .getElementById().

Pasemos a ver como cargar la ruta. Lo primero será construir un objeto request que indique el origen, destino y el modo de ruta a utilizar. En nuestro caso vamos a utilizar el modo conducción o google.maps.TravelMode.DRIVING.

  1. var request = {
  2. origin:origen,
  3. destination:destino,
  4. travelMode: google.maps.TravelMode.DRIVING
  5. };

Ahora necesitamos crear un objeto DirectionsService que será el calcule la ruta y un objeto DirectionsRenderer que será el que la pinte.

  1. var directionsService = new google.maps.DirectionsService();
  2. var directionsDisplay = new google.maps.DirectionsRenderer();
  3.  
  4. directionsDisplay.setMap(map);
  5. var panel = document.getElementById("directionsPanel");
  6. panel.innerHTML = ""; // Vacío el panel, por si buscamos varias veces
  7. directionsDisplay.setPanel(panel);
  8.  
  9. directionsService.route(request, function(result, status) {
  10. if (status == google.maps.DirectionsStatus.OK) {
  11. directionsDisplay.setDirections(result);
  12. }
  13. });

Al objeto encargado de la visualización DirectionsRenderer hay que indicarle dónde esta el mapa y dónde esta la ruta. Es importante que en el caso de la ruta borremos el contenido de lo que haya ya calculado (si se están calculando diferentes rutas) ya que si no añadirá siempre el contenido al final.

De esta forma tan sencilla hemos creado una página que permita calcular una ruta Google Maps desde formulario.

Vídeos sobre Google Maps


2 comentarios en “Ruta Google Maps desde formulario”

Víctor Cuervo

franco

muy buen aporte! podrias cargar el codigo completo porque no lo logro hacer funcionar

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*