谷歌地图,使用群集点击标记

时间:2012-06-07 09:42:34

标签: php javascript google-maps google-maps-markers markerclusterer

这是我的第一个问题。我个人认为这个网站很棒,并且帮了我很多次:))

现在我有一个未解决的问题:P

我正在使用Google maps API开发网站。预计将来我会有太多的标记,所以我想到了解决它的两种方法:

  1. 每次有人点击地图时添加一个事件,更新通过PHP文件显示的标记(从Javascript异步调用该文件)
  2. 添加文件群集(按照以下步骤http://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google-maps/
  3. 我试图同时做这两件事我都有问题

    1. 我不知道如何从Javascript调用PHP文件来更新地图上的标记
    2. 如果我使用markerclusterer,它工作正常,但当我按下单个标记时我无法打开html窗口

        for(var i = 0; i < 50; i += 0.1) {
             var marker = new GMarker(new GLatLng(59.0 + i, 13.80 + i));
             markers.push(marker);
          }
      
    3. 这是我用于将标记推入数组的代码,所以我无法添加事件,好吧,我可以但只适用于最后一个。

      有什么想法吗?

      提前致谢!!!

1 个答案:

答案 0 :(得分:0)

尝试使用此类内容获取单个标记的内容。您只需将标记添加到群集中即可。

function load_content(marker, id){
    $.ajax({
        url: '/map/getMarkerWindow/' + id,
        success: function(data){
            infowindow.setContent(data);
            infowindow.open(map, marker);
        }
    });
}

for(var i = 0; i < 50; i += 0.1) {
       var marker = new GMarker(new GLatLng(59.0 + i, 13.80 + i));

        marker = new google.maps.Marker({
            position: new google.maps.LatLng(59.0 + i, 13.80 + i),
            clickable: true,
            id:i
        });

        google.maps.event.addListener(marker, "click", function() {
            infowindow.close();
            load_content(this, this.id);
        });

       markers.push(marker);
    }