将onclick事件添加到google.map标记

Mar*_*ark 23 javascript api google-maps

我一直想弄清楚JS的一点点:(我有一张谷歌地图

var myCenter=new google.maps.LatLng(53, -1.33);

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);

var marker=new google.maps.Marker({
    position:myCenter,
    icon:'images/pin.png',
    url: 'http://www.google.com/',
    animation:google.maps.Animation.DROP
});
marker.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)

但我似乎无法连接标记网址的onclick事件?

我知道它与添加有关

google.maps.event.addListener(marker, 'click', function() {window.location.href = marker.url;});
Run Code Online (Sandbox Code Playgroud)

但是我把它放在哪里会导致地图无法显示或标记不显示.

Zim*_*Zim 20

确保在markerinitialize()之外定义.否则,undefined如果您尝试将click侦听器分配到initialize()之外,则会出现这种情况.

此外,如果您尝试加载URL www.google.com,则可能会出现SAME-ORIGIN问题,但它应该可以正常使用本地URL.

更新的代码

var myCenter=new google.maps.LatLng(53, -1.33);

var marker=new google.maps.Marker({
    position:myCenter,
    url: '/',
    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;});
Run Code Online (Sandbox Code Playgroud)

在Bootply上工作演示


Mar*_*ean 6

这是我使用的:

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/';
});
Run Code Online (Sandbox Code Playgroud)

我不确定你是否可以urlMarker对象存储属性.

如果您需要显示多个标记(即来自API调用),那么您可以使用如下for循环:

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]);
}
Run Code Online (Sandbox Code Playgroud)