Javascript 标记聚类器

Javascript 标记聚类器,javascript,google-maps,marker,markerclusterer,Javascript,Google Maps,Marker,Markerclusterer,我想问一下我的代码是错误的还是错误的代码排列。 此时将显示侧边栏和信息窗口。但是标记仍然无法聚集。(为什么?) 谷歌地图 //此变量将收集最终放置在侧栏中的html var side_bar_html=“”; //数组,用于保存侧栏使用的标记和html的副本 //因为函数闭包技巧在那里不起作用 var gmarkers=[]; //创建标记和设置事件窗口的函数 函数createMarker(点、名称、html){ var标记=新的GMarker(点); addListener(标记“单击”,函

我想问一下我的代码是错误的还是错误的代码排列。 此时将显示侧边栏和信息窗口。但是标记仍然无法聚集。(为什么?)


谷歌地图
//此变量将收集最终放置在侧栏中的html
var side_bar_html=“”;
//数组,用于保存侧栏使用的标记和html的副本
//因为函数闭包技巧在那里不起作用
var gmarkers=[];
//创建标记和设置事件窗口的函数
函数createMarker(点、名称、html){
var标记=新的GMarker(点);
addListener(标记“单击”,函数(){
marker.openInfoWindowHtml(html);
});
//保存我们以后需要用于侧栏的信息
G标记器。推(标记器);
//在侧栏html中添加一行
侧栏html+=''+name+'
'; 返回标记; } //此函数拾取单击并打开相应的信息窗口 功能myclick(i){ 触发器(gmarkers[i],“click”); } //创建地图 VarMap=新的GMap2(document.getElementById(“map”); addControl(新的GlargeMappControl()); addControl(新的GMapTypeControl()); 赛特中心地图(新格拉特林(43.907787,-79.359741),8); //加分 var点=新玻璃(43.65654,-79.90138); var marker=createMarker(指向“这个地方”,“要在第一个信息窗口中显示的一些内容”) 添加覆盖图(标记); var点=新玻璃(43.91892,-78.89231); var marker=createMarker(指向“那个地方”,“要在第二个信息窗口中显示的一些内容”) 添加覆盖图(标记); var点=新玻璃(43.82589,-78.89231); var marker=createMarker(指向“另一个地方”,“要在第三个信息窗口中显示的某些内容”) 添加覆盖图(标记); var标记=[]; var markerCluster=新的MarkerClusterer(地图、标记、{ imagePath:'https://raw.githubusercontent.com/googlemaps/v3-utility-library/master/markerclustererplus/images/m2.png', 网格大小:10, 最小群集大小:2 }); var mc=新标记聚类器(地图、标记); //将组装好的side_bar_html内容放入side_bar div document.getElementById(“side\u bar”).innerHTML=side\u bar\u html;

希望有人能看一下,我们将感谢您的帮助。谢谢。

您遇到了一些问题

第一个问题:

您不应该使用
gMap2
,因为它自2013年以来就被弃用了。此后,谷歌重新编写了其地图javascript库,使其更加轻量级,并与移动设备兼容,版本为3

V3示例:

 var map = new google.maps.Map(document.getElementById("map"),
    {
        zoom: 6,
        center: myLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
第二个问题:

数组
标记
为空。您正在正确创建
MarkerClusterer
对象,但它已被馈送了一个空数组。它应该是一组标记,您希望集群对象考虑集群。

 var markers = [];
 ...
 var mc = new MarkerClusterer(map, markers);       
第三个问题:

您正在一次又一次地重新实例化变量
marker
。尽量给他们起不同的名字,比如
marker1
marker2
。。。这样,您就可以在以后的代码中引用回标记

 var marker = createMarker(point,"This place","Some stuff to display in the<br>First Info Window")
 var marker = createMarker(point,"That place","Some stuff to display in the<br>Second Info Window")
 ...
var marker=createMarker(指向“这个地方”,“要在第一个信息窗口中显示的一些内容”)
var marker=createMarker(指向“那个地方”,“要在第二个信息窗口中显示的一些内容”)
...
第四个问题

这是最重要的一个。你不应该向公众公开你的谷歌地图API密钥!!!这让我有机会对其进行恶意操作,我相信您可能违反了许可协议。请不要再这样做了。我会修改你的帖子,把那部分删掉

这里是我之前在JSFIDLE中制作的一个集群器示例

 var marker = createMarker(point,"This place","Some stuff to display in the<br>First Info Window")
 var marker = createMarker(point,"That place","Some stuff to display in the<br>Second Info Window")
 ...