jsfiddle демо с модификацией, дополняющей пример @hsz:
Проблема в том, что у вас есть маркер, объявленный 3 раза, и прикрепите только событие клика к тому, который был объявлен последним. Итак, вы должны объявить 3 разных имени для 3 разных маркеров и прикрепить каждый из них к событию onclick. Лучше, если вы делаете это в массиве или что-то
var markers = [];
markers[0] = new google.maps.Marker({
position: usa,
url: '/destinos/exibir/pais_id/3',
title: 'Estados Unidos',
map: map
});
markers[1] = new google.maps.Marker({
position: brasil,
url: '/destinos/exibir/pais_id/2',
title: 'Brasil',
map: map
});
markers[2] = new google.maps.Marker({
position: argentina,
url: '/destinos/exibir/pais_id/1',
title: 'Argentina',
map: map
});
for ( i = 0; i < markers.length; i++ ) {
google.maps.event.addListener(markers[i], 'click', function() {
window.location.href = this.url; //changed from markers[i] to this
});
}