我尝试在我的页面上实现此代码(http://stackoverflow.com/questions/10318316/how-to-hide-or-display-a-google-maps-layer/),以显示天气/云打开/关闭我的地图, 但不知何故,它干扰了我当前的代码。我已经尝试了上面链接中提供的两个选项,但也许我做错了,或者它干扰了我的地图中已有的Fusion Tables选项?
有人可以帮我提供正确的代码片段吗? 我的页面在http://www.strahlen.org/map/mapplusweather.htm。 (de)选择按钮已经在右下角。
提前致谢, 弗兰克
ps:虽然管理员删除了你的帖子,感谢Alexander Farber的你以前的帮助!
ps 2:我当然有天气层工作,请参阅http://www.strahlen.org/map/mapweather.htm,但我无法打开/关闭
*最终修改* 防止链接腐烂:我现在在我的“生产版本”中使用了代码 - > http://www.strahlen.org/map/
答案 0 :(得分:5)
我已经查看了您的网站,我相信您只需对现有代码进行一些基本更改。首先,在initialize()
函数中添加两个新变量:
function initialize() {
var tableId = 3167783;
var cloudDisplayIsOn = false;
var weatherDisplayIsOn = false;
然后,在您现有的云 click
侦听器代码中,进行以下更改:
google.maps.event.addDomListener(document.getElementById('cloud'),
'click', function() {
if ( cloudDisplayIsOn ) {
cloudLayer.setMap( null );
cloudDisplayIsOn = false;
}
else {
cloudLayer.setMap( map );
cloudDisplayIsOn = true;
}
});
最后,在您现有的天气 click
侦听器代码中,进行非常类似的更改:
google.maps.event.addDomListener(document.getElementById('weather'),
'click', function() {
if ( weatherDisplayIsOn ) {
weatherLayer.setMap( null );
weatherDisplayIsOn = false;
}
else {
weatherLayer.setMap( map );
weatherDisplayIsOn = true;
}
});
现在您可能需要进行一些小调试,但我相信这会为cloudLayer
和您需要的weatherLayer
添加显示开/关代码。
答案 1 :(得分:0)
我试图执行类似的功能,但有不同的倾向。以下代码是我们的地图服务器页面引用的fusion_maps_v3.js文件中当前使用的geeToggleLayer函数。我试图消除复选框切换,只是单击图层标签来切换可见性。
function geeToggleLayer(e, checkBoxId, channel, glmId, layerName) {
try {
var cb = document.getElementById(checkBoxId);
var id = glmId + '-' + channel;
// toggle layer visibility via clicking checkbox
try {
if (cb.checked) {
geeMap.showFusionLayer(id);
} else {
geeMap.hideFusionLayer(id);
}
} catch (err2) {
alert('Failed attempt to enable/disable layer: ' +
layerName + '\n' + id + '\n' + err2);
}
} catch (err) {
alert('Failed attempt to get checkbox for layer: ' +
layerName + '\n' + err);
}
cancelEvent(e);
}