Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Dibujar rutas en Google Maps | v3

25 febrero, 2012

Rutas en Google Maps

En los post anteriores hemos visto como incorporar un mapa de Google Maps en nuestra web y como introducir marcas o ítems dentro del mapa, en este artículo vamos a dibujar líneas o poli-líneas mostrando una ruta.

Línea o poli línea

Para trazar líneas o poli-líneas con los mapas tenemos que utilizar la clase “google.maps.Polyline”, que nos proporciona Google Maps en su API, las propiedades que vamos a utilizar son las siguientes:

  • clickable boolean: Indica si este objeto controla eventos click. Por defecto el valor es true.

  • map: Es el mapa en el que se va a mostrar la poli línea. El que hemos creado antes con new google.maps.Map(document.getElementById….

  • path: Es la secuencia ordenada de coordenadas de la poli línea. Esta ruta se puede especificar mediante un conjunto simple de LatLng o un conjunto MVCArray de LatLng. Recuerda que si transmites un conjunto simple, se convertirá en MVCArray. Si insertas o eliminas LatLng en MVCArray, se actualizará automáticamente la poli-línea en el mapa. En nuestro ejemplo hemos utilizado la variable ruta para pasarle estos valores.

  • strokeColor string: Contiene el color. En este ejemplo utilizamos este: “#222000”, aunque puedes poner cualquier color CSS3 salvo los nombres de colores.

  • strokeOpacity number: Muestra la opacidad del trazo, es decir, determina lo transparente que será la linea, los valores estarán entre 0,0 y 1,0.

  • strokeWeight number: Muestra la anchura del trazo.

El código que hemos utilizado es igual que el de los ejemplos anteriores, solamente hemos añadido la poli línea que hemos dibujado a través del objeto “google.maps.Polyline”.

Primero dibujamos la ruta, creamos el array ruta en el que ponemos los siguientes valores, nos quedaría así:

        var ruta = [
        new google.maps.LatLng(13.6203, 101.09),
        new google.maps.LatLng(14.6203, 101.29),
        new google.maps.LatLng(15.0203, 102.09)
    ];

Después creamos el objeto “lineas” al que le vamos a pasar los puntos que queremos que dibuje a través del array ruta, este es el código:

    var lineas = new google.maps.Polyline({
        path: ruta,
         map: map,
         strokeColor: '#222000',
         strokeWeight: 4,
         strokeOpacity: 0.6,
         clickable: false
    });

Ejemplo de rutas en Google Maps:

Para mostrar la ruta vamos a reutilizar el código del artículo anterior en el que introducíamos una marca en un mapa, y a partir de este añadiremos el que acabamos de escribir.

El código completo sería el siguiente:

<script src="http://maps.googleapis.com/maps/api/js?sensor=false">
// <![CDATA[
// ]]></script><script>// 
<![CDATA[
function initialize() {    
     var myOptions = {    
     center: new google.maps.LatLng(13.570648483963033, 101.44157409667969),   
     zoom: 8,      
     mapTypeId: google.maps.MapTypeId.ROADMAP         };    
     var map = new google.maps.Map(document.getElementById("map_canvas"),             myOptions); 
     gozilla3 = new google.maps.Marker({        position: new google.maps.LatLng(13.6203, 101.09),  
      icon: 'images/flecha.png',       
      map: map,         
      title: 'GodZZilla!!'          });    
      var ruta = [         new google.maps.LatLng(13.6203, 101.09),         new google.maps.LatLng(14.6203, 101.29),         new google.maps.LatLng(15.0203, 102.09)     ]; 
    var lineas = new google.maps.Polyline({        
    path: ruta,
    map: map, 
    strokeColor: '#222000', 
    strokeWeight: 4,  
    strokeOpacity: 0.6, 
    clickable: false     });       }
// ]]></script>
Rutas en Google Maps

Haz click aquí si quieres ver un ejemplo funcionando.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Comentarios (16)

No son rutas!! son lineas nomas…

Responder

Hola,

Obviamente si, tu eres el que debes de hacer la ruta, o bien en coche o bien andando, o bien en bici, y no tiene en cuenta si estás pasando por una carretera, campo, o estas dentro de un edificio, lo he llamado “ruta” porque uniendo los puntos realiza la ruta por la que has pasado.

Quizá pueda parecer un poco confuso, pero no es la intención.

Un saludo,

Responder

esta función se puede implementar en móviles? o qué debo hacer para que me funcione?

Responder

Hola Juan Daniel,
No te he entendido bien a que te refieres con lo del móvil, esta función escribe “dibuja” las lineas o la “ruta” en un mapa de Google maps, indiferentemente si lo ves desde el móvil, o si lo ves desde un navegador convencional.
Así es como quedaría, un ejemplo
https://www.codifica.me/pruebas/googlemaps/linea.html

Responder

Hola lo subi el codio a mi mobil de celular pero cuando maximizo con la tecla de + se pierde la linea y ya no existe

Responder

Hola Alex,

¿Qué versión tienes de Android?
En mi móvil funciona correctamente , igual que en el link que tienes puesto al final del código, quizá sea por la versión de tu Android o de tu móvil.

En principio debería funcionar correctamente en cualquier navegador web que pueda usar javascript.

Saludos

Responder

Tengo la version 4.2.2 Lo que pasa es lo siguiente aparece la linea pero cuando hago zoom desaparece tambien use este codigo igual me pasa lo mismo puedes ayudarme yq q estoy programando con html mi aplicacion:

Simple Polylines

html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}

// This example creates a 2-pixel-wide red polyline showing
// the path of William Kingsford Smith’s first trans-Pacific flight between
// Oakland, CA, and Brisbane, Australia.

function initialize() {
var mapOptions = {
zoom: 3,
center: new google.maps.LatLng(0, -180),
mapTypeId: google.maps.MapTypeId.TERRAIN
};

var map = new google.maps.Map(document.getElementById(‘map-canvas’),
mapOptions);

var flightPlanCoordinates = [
new google.maps.LatLng(37.772323, -122.214897),
new google.maps.LatLng(21.291982, -157.821856),
new google.maps.LatLng(-18.142599, 178.431),
new google.maps.LatLng(-27.46758, 153.027892)
];
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
geodesic: true,
strokeColor: ‘#FF0000’,
strokeOpacity: 1.0,
strokeWeight: 2
});

flightPath.setMap(map);
}

google.maps.event.addDomListener(window, ‘load’, initialize);

Saludos

Responder

Buenas Alex,
Pues así a simple vista no te puedo decir mucho, mañana desde el trabajo probaré con esa versión a ver si me funciona correctamente o no, y en el caso de que no me funcione veré de que puede ser.
De todas maneras, te comento, Prueba a probarlo con distintos navegadores, tal vez falle en algún navegador en particular en versión móvil.

Saludos

Responder

como puedo trasar lines de trasporte en una ciudad , como el ejemplo

Responder

En la web tienes tres o cuatro ejemplos de como funciona dibujar lineas sobre Google maps, échales un ojo y si necesitas algo en concreto déjanos un comentario y vemos si te podemos echar una mano.
Gracias

Responder

hola como puedo cargar las coordenadas que tengo en un bloc de notas al programa para que me realice la ruta
…gracias

Responder

Hola Andrea,

Pues si las tienes una por linea, yo las pasaría a un excel y desde un excel y en una columna les pondría esto concatenado.
“new google.maps.LatLng(” “tu cordenada” “)” , le das a doble click en el excel y te pondrá en ese formato todos los datos,
copia y pega los datos y voila! ya lo tienes 😉

Saludos

Responder

Hola se puede crear al momento de poner un punto una bandera con alguna descripcion y asi la siguiente y la siguiente?

Responder

Hola Paul,
Pues ahora mismo no lo recuerdo hace ya años que no toco esto, de todas maneras tienes varios tutoriales sobre lo mismo, en la web, igual te vale algo así.
https://www.codifica.me/javascript/dibujar-marcadores-en-un-mapa-de-google-maps-v3/

Responder

He estado haciendo una aplicacion donde sepuedan graficar redes HFC (planta externa) pero seme ha presentado una dificultad coneltrazado delas polilineas, exactamente con la posibilidad de modificarlas,ya sea adicionar coordenadas como rectificarlas. Podrias ayudarme en esto??

GRacias

Responder

Hola hay alguna manera de detectar si un punto gps se salio de una ruta?

Responder