Me tomé el trabajo de ordenar tu código y convertirlo a la versión 3 de la API. Esto es porque en la versión que utilizas no se podía usar setPath() (o al menos yo no podía). Además la v3 es más limpia y moderna. Además comenté el código para hacer bien claro qué se hace paso a paso:
Código Javascript
:
Ver original//variables y objetos globales
var map //mapa
var geocoder; //geocoder
var _path = []; // ruta
var _poliLinea = new google.maps.Polyline({ //polilinea
path: _path,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
//inicializo
initialize();
//cargo un par de ciudades de ejemplo
showAddress('buenos aires');
showAddress('montevideo');
showAddress('sao paulo');
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);
}
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)
} 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.Xa, o_punto.Ya)
//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);
}
-edit-
Este es el script que tenés que incluir ahora:
Acá lo ves en funcionamiento:
http://jsbin.com/uzizow/1/