【问题标题】:Google Maps API add Listeners to an array of markersGoogle Maps API 将侦听器添加到标记数组
【发布时间】:2014-12-29 02:10:01
【问题描述】:

我有一张地图,显示基于保存在数组中的数据库的标记。现在我想为它们添加动画。快速研究给了我information about single markers,但没有提示我如何对多个标记执行这些操作。

对 Javascript 非常陌生,我不太确定如何执行此操作。

我有一个基于 php 的 foreach 循环,其中添加了标记。 (据我了解,数据库请求仅适用于 php)。

我尝试插入

google.maps.event.addListener(flightMarkers[flightMarkers.length], 'click', flightMarkers[flightMarkers.length].setAnimation(google.maps.Animation.BOUNCE););

但随后地图甚至不再显示。

非常感谢任何想法和提示!提前致谢。

【问题讨论】:

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


    【解决方案1】:

    flightMarkers.length 包含 flightMarkers 中的项目数。

    所以当你有

    flightMarkers = new Array();
    flightMarkers[ 0 ] = "value";
    flightMarkers[ 1 ] = "value";
    flightMarkers[ 2 ] = "value";
    

    flightMarkers.length 将包含数字 3,但该数组中的最后一个索引是 2。在本例中,当您键入 flightMarkers[flightMarkers.length] 时,它将是 flightMarkers[3],这是未定义的。

    如果您只想将侦听器添加到最后一个标记,请使用flightMarkers[flightMarkers.length - 1]。 如果要为每个标记添加侦听器,请使用 for 循环:

    for( var i = 0; i < flightMarkers.length; i++ ) {
        google.maps.event.addListener(flightMarkers[i], 'click', 
        flightMarkers[i].setAnimation(google.maps.Animation.BOUNCE););
    }
    

    【讨论】:

    • 关于-1的好点,不知道为什么我自己没有想到这一点。不幸的是,您发布的两个解决方案都不起作用。两者仍然只是从网站上“删除”地图。我确保将代码放在 javascript 部分中......但我开始觉得它不喜欢 '.addListener' 或类似的东西。谷歌地图版本是 3.18.14 顺便说一句。感谢您的帮助!
    • 如何将最后一个参数包装到 function(){} 中? for( var i = 0; i &lt; flightMarkers.length; i++ ) { google.maps.event.addListener( flightMarkers[i], 'click', function() { flightMarkers[i].setAnimation(google.maps.Animation.BOUNCE); }); };
    • 越来越近 ;) 现在显示地图,所有标记,但缺少动画,如果您检查地图(使用 chrome),您会收到以下错误消息:未捕获类型错误:无法读取未定义的属性'setAnimation'如果您想自己检查一下:wdwva.com/index.php/routemap
    • @Dr.Molle 不幸的是不起作用:(如果我在代码中的任何位置添加地图,就不再显示地图
    【解决方案2】:

    感谢@Dr.Molle 和@Lukas Kovac,这才是有效的:

     for (var i = 0; i < flightMarkers.length; i++) {
                  google.maps.event.addListener(flightMarkers[i], 'click',
    
                  function () {
                      this.setAnimation(google.maps.Animation.BOUNCE);
                  });
              }
    

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多