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")
...