Tom*_*Tom 67 javascript google-maps-api-3
我正在忙着一个脚本,它会在我的网站上制作一个带有多个标记的谷歌地图画布.我希望当你点击一个标记时,会打开一个信息窗口.我已经这样做了,代码就是这样:
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
function addMarker(map, address, title) {
geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title:title
});
google.maps.event.addListener(marker, 'click', function() {
var infowindow = new google.maps.InfoWindow();
infowindow.setContent('<strong>'+title + '</strong><br />' + address);
infowindow.open(map, marker);
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
addMarker(map, 'Address', 'Title');
addMarker(map, 'Address', 'Title');
Run Code Online (Sandbox Code Playgroud)
这100%工作.但是现在我希望当一个infowindow打开,并且你想打开第二个时,第一个自动关闭.但我还没有办法做到这一点.infowindow.close(); 没有用.有人为这个问题做出示例或解决方案吗?
小智 146
infowindow是局部变量,窗口在关闭时不可用()
var latlng = new google.maps.LatLng(-34.397, 150.644);
var infowindow = null;
...
google.maps.event.addListener(marker, 'click', function() {
if (infowindow) {
infowindow.close();
}
infowindow = new google.maps.InfoWindow();
...
});
...
Run Code Online (Sandbox Code Playgroud)
raj*_*est 14
声明全局变量:
var mapOptions;
var map;
var infowindow;
var marker;
var contentString;
var image;
Run Code Online (Sandbox Code Playgroud)
在intialize使用地图的addEvent方法:
google.maps.event.addListener(map, 'click', function() {
if (infowindow) {
infowindow.close();
}
});
Run Code Online (Sandbox Code Playgroud)
对于infowindows动态创建的循环,声明一个全局变量
var openwindow;
然后在addListener函数调用中(在循环内):
google.maps.event.addListener(marker<?php echo $id; ?>, 'click', function() {
if(openwindow){
eval(openwindow).close();
}
openwindow="myInfoWindow<?php echo $id; ?>";
myInfoWindow<?php echo $id; ?>.open(map, marker<?php echo $id; ?>);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103507 次 |
| 最近记录: |