Google Maps API v3 - 在'for'循环内添加事件监听器仅适用于某些迭代

时间:2014-02-15 00:43:25

标签: javascript google-maps google-maps-api-3

我正在使用Google Maps API v3开发网站。对此事项重要的基本功能如下:

  • 来自JS数组,读取几个点的坐标(工作)
  • 在地图上创建标记(工作)
  • 将click事件的事件侦听器添加到每个标记(仅适用于循环的某些迭代)

JS数组标记信息示例:

var photos = [
{
    file: "republica87",
    title: "Av. República, 87",
    yearA: "2013",
    yearB: "1909",
    desc: "Edifício típico ...",
    author: "Paulo Guedes",
    from: "Arquivo Municipal de Lisboa | Fotográfico",
    link: "...", 
    coords: "38.74266,-9.146851,-85",
},

/*...*/

];

对于标记,只有coords字段是相关的,然后将其分为纬度和经度(第三个值对此无关紧要。)

然后,在'for'循环内,创建标记并为每个标记创建一个'click'事件监听器:

/*...*/

var markercam=new Array();

for (var i=1;i<photos.length;i++){
    coords=photos[i].coords;
    coords=coords.split(",");
    lat=coords[0];
    lon=coords[1];
    rot=coords[2];

    /*...*/

    markercam[i] = new google.maps.Marker({
        position: new google.maps.LatLng(lat,lon),
        map: map,
        icon: cameraicon,
        url: './galeria.html?id='+i,
        indice: i,
        shape: shapecirc,
    });

    google.maps.event.addListener(markercam[i], 'click', function() {
        window.location.href = this.url;    
    });

    /*...*/

}

/*...*/

但是,似乎只为某些标记添加了监听器。我还没有弄清楚可能导致这种情况的那些标记。作为参考,创建监听器的i的值为:1,7,9,11,12,13,17,19,22。它们始终相同。

同样重要的是要注意,除了“点击”听众之外,我还添加了“鼠标悬停”和“鼠标悬停”事件,这些事件适用于每个标记而没有任何问题。

包含所有标记信息的文件是 here ,放置标记的地图是 here 。如您所见,当单击某些标记时,您将被发送到其他页面,而其他页面则不会执行任何操作。例如:最南端的标记有效,最北边没有。

有什么想法吗?

谢谢!

PS:请原谅任何明显的编程问题,这是我第一次处理JS。

1 个答案:

答案 0 :(得分:1)

没有记录(至少我找不到它),但是将标记的optimized - 属性设置为false会为我修复它。

似乎setZIndex()的调用会更新Marker-Image的ZIndex,而不是MouseTarget的ZIndex(可点击区域,它在不同的图层中定义) ),当optimized - 属性设置为true(默认设置)