javascript - infowindow.close() 不与多个标记一起使用

标签 javascript google-maps-api-3 geolocation google-maps-markers

我阅读了很多解决方案并尝试了几个,但在我的脚本中我无法完成它。

我喜欢在单击另一个标记时关闭事件信息窗口。

部分代码:

        for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          });
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          google.maps.event.addListener(marker, 'click', function() {
              marker['infowindow'].close(); // has to close another active window
              this['infowindow'].open(map, this);
          });
        }

有人提示或更好...解决方案?

谢谢。

最佳答案

将标记保存在数组中并添加一个函数调用以在打开当前窗口之前关闭所有窗口:

function closeInfos() {
    for(var i=0; i<markers.length; i++)
    {
        markers[i]['infowindow'].close();
    }
}

编辑:

使用您的代码,它应该看起来像这样:

var markers = [];
for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          }));
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          markers.push(marker);
          google.maps.event.addListener(marker, 'click', function() {
              closeInfos();
              this['infowindow'].open(map, this);
          });
        }

关于javascript - infowindow.close() 不与多个标记一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611729/

相关文章:

javascript - 我可以在函数级别设置 jshint 选项吗?

javascript - 如何仅在输入 3 个键后才显示 google-maps 自动完成选项?

google-maps-api-3 - 缩放到Google Maps API v3中的geojson多边形边界

javascript - 设置后如何删除谷歌地图API标记

api - TK102 GPS定位器的API,开发规范或类似内容

java - Android studio 不检查 mFusedLocationProviderClient.getLastLocation().addOnSuccessListener 并返回当前位置 null

Javascript - 计算围绕一个中心点的四个 Angular 的地理坐标点

javascript - 使用 lodash 按值对对象进行排序

javascript - 按钮元素事件

javascript - 图表中一致的条宽