javascript - 如何隐藏标记簇内标记上的信息窗口

标签 javascript google-maps google-maps-api-3 infowindow markerclusterer

我的标记很少有信息窗口和标记簇。我想在标记成为 map 中标记簇的一部分时隐藏标记的信息窗口,并在它们实际单独显示而不是在簇中显示时显示它们。

标记和信息窗口的代码类似于:

    var marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
     ...         
    });



var myOptions = {
        .......
};

infowindow = new InfoBox(myOptions);
infowindow.open(map, marker);

markers.push(marker);

然后我有标记簇

 var markerCluster = new MarkerClusterer(map, markers,markerClustererOptions);

有人可以提供有关如何解决此问题的代码/建议/链接

最佳答案

观察标记的map_changed事件。当标记的map属性为空时,关闭信息窗口,否则打开它。

       google.maps.event.addListener(marker,'map_changed',function(){
        if(this.getMap()){
          infowindow.open(this.getMap(),this);
        }
        else{
          infowindow.close();
        }
       });

示例:

function initialize() {


  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 2,
    center: new google.maps.LatLng(0, 0),

    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  var markers = [];
  for (var i = 0; i < 100; i++) {
    (function(photo) {
      var latLng = new google.maps.LatLng(photo.latitude,
          photo.longitude),
        marker = new google.maps.Marker({
          position: latLng
        });
      console.log(photo)
      markers.push(marker);
      var infowindow = new InfoBox({
        content: '<img src="http://mw2.google.com/mw-panoramio/photos/thumbnail/' + photo.photo_id + '.jpg" />',
        disableAutoPan: true,
        closeBoxURL: "",
        pane: "floatPane"

      });

      google.maps.event.addListener(marker, 'map_changed', function() {
        if (this.getMap()) {
          infowindow.open(this.getMap(), this);
        } else {
          infowindow.close()
        }
      });


    }(data.photos[i]));

  }
  var markerCluster = new MarkerClusterer(map, markers);
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map {
  margin: 0;
  padding: 0;
  height: 100%;
}
<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="https://googlemaps.github.io/js-marker-clusterer/examples/data.json"></script>
<script src="https://googlemaps.github.io/js-marker-clusterer/src/markerclusterer.js"></script>
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script>

关于javascript - 如何隐藏标记簇内标记上的信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415373/

相关文章:

javascript - javascript 和 iOS 中的 PBKDF2 哈希生成不同的 key

javascript - React Native 中对象的顺序对象

javascript - 以 3 为增量放大和缩小 Google map

javascript - 如何计算折线距离?

javascript - 如何在输入地址时发送新的地理定位请求并刷新 Google map ?

javascript - 在信息窗口谷歌地图 v3 中添加事件处理程序元素

javascript - jQuery 出现函数

javascript - 功能引用

ios - 更新给定键的特定点击 marker.userdata 值

javascript - MarkerClustererPlus 如何为聚类图像设置不同的尺寸?