Google Maps API v3 - 在"for"循环中添加事件侦听器仅适用于某些迭代



我正在使用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。他们总是一样的。

    同样需要注意的是,除了"click"Listener之外,我还添加了"mouseover"one_answers"mouseout"事件,它们适用于每个标记,没有任何问题。

    具有所有标记信息的文件是此处,放置标记的地图是此处。正如你所看到的,当点击一些标记时,你会被发送到另一个页面,而其他人什么都不做。示例:最南端的标记有效,最北端的标记无效。

    有什么想法吗?

    谢谢!

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

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

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

    最新更新