【问题标题】:Open Google Maps infowindows automatically for all of the markers and markerclusters为所有标记和标记簇自动打开 Google 地图信息窗口
【发布时间】:2012-12-21 14:06:55
【问题描述】:

我使用 Google Maps api v3 版本创建了 Google Map。这是“标准”谷歌地图,充满了标记和集群。每个标记和集群都有自己的信息窗口,当最终用户点击它时显示。

我需要的是,在加载地图时,打开地图上显示的所有标记和集群的所有 InfoWindows。

现在,只有当我点击它们时才会显示它们:

google.maps.event.addListener(markerGreenCluster, 'clusterclick', function(markerGreenCluster) {

  var content = '';
  var info = new google.maps.MVCObject;
  info.set('position', markerGreenCluster.center_);
  var infowindow = new google.maps.InfoWindow();
  aIWgreen.push(infowindow);
  var center = markerGreenCluster.getCenter();
  var size = markerGreenCluster.getSize();
  var markers = markerGreenCluster.getMarkers();

  // more code goes here...

})

我注意到问题出在集群定义中,方法 markerGreenCluster.getSize(); 它返回 grupped 标记的数量,并且可以在加载整个地图后返回它,或类似的东西。

您能帮我如何实现在加载地图时所有 InfoWindows 都打开(显示)吗?

【问题讨论】:

  • info 对象的用途是什么?

标签: google-maps google-maps-api-3 markerclusterer


【解决方案1】:

信息窗口仅在单击时打开,因为您仅在单击事件侦听器上创建它们。将创建信息窗口的代码从点击处理程序中移到窗口加载事件处理程序中。

【讨论】:

  • 是的,但在这种情况下,我只能得到最后创建的集群的大小(最后创建的集群中的标记数,这还不够)。
【解决方案2】:

为此,我要做的是创建一个 InfoWindows 对象并将其存储到标记中。像这样的

function CreateMarker(Lat, Lng, Title, Content) {
  var aInfoWin = new google.maps.InfoWindow({
    content: Content,
    position: new google.maps.LatLng(Lat,Lng)
    });

  var aMarker = new StyledMarker({
    title: Title,
    position: new google.maps.LatLng(Lat,Lng),
    MyInfoWin: aInfoWin
    });

  aMarker.MyInfoWin.open();
}

您可以像访问其他属性一样访问您喜欢的标记信息窗口(事件、代码......)。

代码未经测试,仅供参考

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2014-09-26
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    相关资源
    最近更新 更多