Google maps 打开一个新的(gMap v3)时关闭打开的InfoBubble
我不知道该怎么办。。。如果我要打开一个新的,我只想关闭所有打开的Google maps 打开一个新的(gMap v3)时关闭打开的InfoBubble,google-maps,infobubble,Google Maps,Infobubble,我不知道该怎么办。。。如果我要打开一个新的,我只想关闭所有打开的infoBubbles。我正在使用以下代码。思想?我试了很多次,用谷歌搜索了很多次,但不应该这么复杂,是吗?我本想创建一个数组并为打开的数组保存id,但我认为必须有另一种更简单的方法来解决这个问题 $(document).ready(function(){ createmap(); function createmap(lat,lng){ var latlng = new googl
infoBubbles
。我正在使用以下代码。思想?我试了很多次,用谷歌搜索了很多次,但不应该这么复杂,是吗?我本想创建一个数组并为打开的数组保存id,但我认为必须有另一种更简单的方法来解决这个问题
$(document).ready(function(){
createmap();
function createmap(lat,lng){
var latlng = new google.maps.LatLng(50, 10);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
bounds = new google.maps.LatLngBounds();
createMarker();
}
function createMarker(){
var markers = [];
var cm = window.cm = new ClusterManager(
map,
{
objClusterIcon: new google.maps.MarkerImage('images/map/flag_cluster.png', false, false, false, new google.maps.Size(20,20)),
objClusterImageSize: new google.maps.Size(20,20)
}
);
var json = [];
var x1 = -85;
var x2 = 85;
var y1 = -180;
var y2 = 180;
for (var i=0; i<20; ++i) {
json.push(
'{'+
'"longitude":'+(x1+(Math.random()*(x2-x1)))+','+
'"latitude":'+(y1+(Math.random()*(y2-y1)))+','+
'"title":"test"'+
'}'
);
}
json = '['+json.join()+']';
// eval is ok here.
eval('json = eval(json);');
infos = [];
$.each(json, function(i,item){
var contentString = '<div id="content"><a onclick="createdetailpage('+i+');">'+item.title+'<br /></a></div>';
console.log(item.latitude);
var myLatlng = new google.maps.LatLng(item.latitude,item.longitude);
var marker = new google.maps.Marker({
position: myLatlng,
//map: map,
flat: true,
title:item.title,
//animation: google.maps.Animation.DROP,
//icon: myIcon
});
var infoBubble = new InfoBubble({
content: '<div class="phoneytext">'+contentString+'</div>'
});
google.maps.event.addListener(marker, 'click', function() {
if (!infoBubble.isOpen()) {
infoBubble.open(map, marker);
}
});
cm.addMarker(marker, new google.maps.Size(50, 50));
});
map.fitBounds(bounds);
}
});
$(文档).ready(函数(){
createmap();
函数createmap(纬度、液化天然气){
var latlng=新的google.maps.latlng(50,10);
变量myOptions={
缩放:12,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
bounds=新的google.maps.LatLngBounds();
createMarker();
}
函数createMarker(){
var标记=[];
var cm=window.cm=new ClusterManager(
地图,
{
objClusterIcon:new google.maps.MarkerImage('images/map/flag_cluster.png',false,false,false,new google.maps.Size(20,20)),
objClusterImageSize:新的google.maps.Size(20,20)
}
);
var json=[];
var-x1=-85;
var x2=85;
变量y1=-180;
变量y2=180;
对于(var i=0;i而言,InfoBubble
是一个OverlayView
。就我所见,添加覆盖时会发出一个overlaycomplete
事件。如果添加的覆盖与“this”不同,可能您所有的InfoBubble
都可以侦听该事件并关闭
不过,这只是一个想法,我自己还没有尝试过。如果您尝试一下,我会很感激您的反馈!只打开一个infoBubble的最简单方法是只打开一个infoBubble,并根据单击的标记以不同的内容打开它
这对我很有帮助!非常感谢。