Solución:
Asegúrate que marker
se define fuera de initialize (). De lo contrario, será undefined
si intenta asignar el oyente de clics fuera de initialize ().
Además, es posible que tenga problemas con el MISMO ORIGEN si intenta cargar la URL www.google.com
, pero debería funcionar bien con una URL local.
Código actualizado
var myCenter=new google.maps.LatLng(53, -1.33);
var marker=new google.maps.Marker({
position:myCenter,
url: "https://foroayuda.es/",
animation:google.maps.Animation.DROP
});
function initialize()
{
var mapProp = {
center:myCenter,
zoom: 14,
draggable: false,
scrollwheel: false,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("map-canvas"),mapProp);
marker.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addListener(marker, 'click', function() {window.location.href = marker.url;});
Demostración de trabajo en Bootply
Esto es lo que usaría:
var latLng = new google.maps.LatLng(53, -1.33);
var map = new google.maps.Map(document.getElementById('map_canvas'), {
center: latLng,
draggable: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
scrollwheel: false,
zoom: 14
});
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
icon: 'images/pin.png',
map: map,
position: latLng
});
google.maps.event.addDomListener(marker, 'click', function() {
window.location.href="http://www.google.co.uk/";
});
No estoy seguro de si puede almacenar un url
propiedad con un Marker
objeto.
Si necesita mostrar varios marcadores (es decir, desde una llamada a la API), puede utilizar un for
bucle como este:
for (var i = 0; i < markers.length; i++) {
(function(marker) {
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
icon: 'images/pin.png',
map: map,
position: market.latLng
});
google.maps.event.addDomListener(marker, 'click', function() {
window.location.href = marker.url;
});
})(markers[i]);
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)