【问题标题】:infowindow is not closing when close button is pressed in google maps v3 markercluster..?在谷歌地图 v3 markercluster 中按下关闭按钮时,infowindow 没有关闭..?
【发布时间】:2012-07-10 07:21:51
【问题描述】:

加载函数

function load() {

                 var cluster = [];
                infoWindow = new google.maps.InfoWindow();         

                 var map = new google.maps.Map(document.getElementById("map"), {
                        center: new google.maps.LatLng(10.6145, -24.3418),
                        zoom: 2,
                        mapTypeId: 'roadmap'
                      });


              // Read the data from example.xml
               downloadUrl("phpsqlajax_genxml.php", function(data) {
                var xml = data.responseXML;
                var markers = xml.documentElement.getElementsByTagName("marker");

                for (var i = 0; i < markers.length; i++) {
                  // obtain the attribues of each marker
                  var name = markers[i].getAttribute("name");
                  var address = markers[i].getAttribute("address");
                  var link = markers[i].getAttribute("link");
                  var type = markers[i].getAttribute("type");
                  var point = new google.maps.LatLng(
                      parseFloat(markers[i].getAttribute("lat")),
                      parseFloat(markers[i].getAttribute("lng")));

                   var html = "<b>" + '<a href="' + link + '" >' + markers[i].getAttribute("name")  + '</a>' + "</b> <br/>"  + "</b> <br/>" + '<a href="' + link + '" >' + markers[i].getAttribute("address")  + '</a>';

                  var icon = customIcons[type] || {};

                  // create the marker
                    var marker = new google.maps.Marker({
                    map: map,
                    position: point,
                    icon: icon.icon,
                    shadow: icon.shadow
                  });


                 addMarker(marker, html);



              cluster.push(marker);

                }
                var mc = new MarkerClusterer(map,cluster);

                 //markerCluster = new MarkerClusterer(map, gmarkers);
              });
   }

添加标记

function addMarker(marker, content)
    {


      google.maps.event.addListener(marker, 'click', function() {

       infoWindow.setContent(content);
       infoWindow.open(map, marker);
       infoWindow.close();


     });

    }

ajax 代码

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

【问题讨论】:

  • "加载函数函数 load() {"。这是一个有趣的功能。
  • 说真的,请编辑您的问题,以便正确格式化代码。很难按原样阅读。
  • 我知道,但是你的格式很糟糕,所以看起来只有一行代码。
  • 您的 javascript 代码中有错误:Uncaught TypeError: Object #&lt;HTMLDivElement&gt; has no method 'O'。这显然发生在您严重混淆的main.js 中的某个地方,祝您调试顺利。
  • 为什么要先调用 infoWindow.open() 然后再调用 infoWindow.close()?

标签: php mysql ajax google-maps markerclusterer


【解决方案1】:

如果您单击集群标记,则会触发“clusterclick”事件。

添加一个事件监听器然后关闭信息窗口:

var mc = new MarkerClusterer(map, cluster);

google.maps.event.addListener(mc, 'clusterclick', function() {
  infoWindow.close();
}); 

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多