当我点击地图中的其他地方或其他标记时,我希望关闭该信息窗口。也就是说,只有一个infowindow同时打开,所有其他infowindow都关闭。 但我是怎么做到的?
感谢您的回答!
我的代码:
var map = new google.maps.Map(document.getElementById('map'), options);
addMarker({
coords: { lat: 62.791711, lng: 22.808479 },
content: 'test 1'
});
addMarker({
coords: { lat: 65.799962, lng: 24.497773 },
content: 'test 2'
});
addMarker({
coords: { lat: 62.331629, lng: 22.890667 },
content: 'test 3'
});
function addMarker(props) {
var marker = new google.maps.Marker({
position: props.coords,
map: map
});
if (props.content) {
var infoWindow = new google.maps.InfoWindow({
content: props.content
});
marker.addListener('click', function() {
infoWindow.open(map, marker);
});
}
}
答案 0 :(得分:1)
要一次只打开1个信息窗口,请创建一个包含单个InfoWindow实例的全局变量。
var infoWindow;
然后,在初始化函数(initMap
)中,实例化信息窗口:
infoWindow = new google.maps.InfoWindow();
将addMarker
功能更改为以下内容:
function addMarker(props) {
var marker = new google.maps.Marker({
position: props.coords,
map: map
});
if (props.content) {
marker.addListener('click', function() {
infoWindow.setContent(props.content);
infoWindow.open(map, marker);
});
}
}
如果您想在用户点击地图时关闭信息窗口,您可以将此事件监听器添加到地图中:
map.addListener('click', function() {
if (infoWindow) infoWindow.close();
});
以下是a JSBin的工作示例。
答案 1 :(得分:0)
您可以将全局变量用于infoWindow并检查是否已经分配了 如果这是真的那么关闭并打开另一个
public class MainTest2{
public static void main(String args[]){
try{
Test t2 = new Test();
t2.a();
System.out.println("executing main1 ");
}catch (Exception e){
System.out.println("exception caught in main");
}
System.out.println("ending main ");
}
}