Código HTML:
Ver original<!DOCTYPE html>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> <!-- MAPA -->
<div id="map_canvas" style="width: 600px; height: 600px;"></div> <input type="text" name="ciudad" id="ciudad" /> <button onclick="agregarCiudad();">Agregar
</button>
<!-- funcion para agregar ciudad. La separo porque es sólo ejemplo -->
<script type="text/javascript"> function agregarCiudad(){
showAddress(document.getElementById('ciudad').value);
document.getElementById('ciudad').value = '';
}
<script type="text/javascript"> //variables y objetos globales
var map //mapa
var geocoder; //geocoder
var _path = []; // ruta vacía
var _ciudades = new Array(); // ciudades que se cargaron para guardar
var _poliLinea = new google.maps.Polyline({ //polilinea
path: _path,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
//inicializo
initialize();
function initialize() {
//centrado
var myLatLng = new google.maps.LatLng(37.4419, -122.1419);
//opciones
var mapOptions = {
zoom: 1,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
//geocoder
geocoder = new google.maps.Geocoder();
//creo mapa
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
//asigno polilinea al mapa
_poliLinea.setMap(map);
//verifico si hay ciudades guardadas en localStorage
if(localStorage['ciudades']){
__ciudad = JSON.parse(localStorage['ciudades']);
//agrego cada ciudad que se guardó
for(i=0;i<__ciudad.length;i++){
showAddress(__ciudad[i]);
}
}
}
function showAddress(s_address) {
var address = s_address;
//busco la direccion dada
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//centro el mapa en el resultado
map.setCenter(results[0].geometry.location);
//creo marcador
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
//agrego punto a la linea
agregarRuta(results[0].geometry.location)
//guardo la ciudad en LocalStorage
_ciudades.push(results[0].formatted_address);
localStorage['ciudades'] = JSON.stringify(_ciudades);
} else {
alert('Error: ' + status);
}
});
}
function agregarRuta(o_punto){
//creo punto a partir de la dirección dada
var o_LL = new google.maps.LatLng(o_punto.lat(), o_punto.lng())
//agrego el punto al array de la ruta
_path.push(o_LL);
//cargo la nueva ruta en la polilinea
_poliLinea.setPath(_path);
//centro el mapa en el último punto
map.setCenter(o_LL);
//Hago un poco de zoom
map.setZoom(6);
}
bueno, he estado utilizando el código que me pasaste...localmente me funciono, solo que cuando lo pruebo en mi servidor no funciona... cada vez que actualizo el navegador pierdo la ruta que fui marcando...