我创建了一个按钮来切换我的雷达图层。默认情况下,加载页面时图层已关闭。这就是我想要的,完美的。我点击了雷达按钮,雷达覆盖了。那部分也很有效。我的问题是,当我再次点击它关闭它时,它只会熄灭一秒钟,然后再回来。我错过了什么?
var radarOptions = {
gmap: map,
name: 'Radar',
position: google.maps.ControlPosition.TOP_RIGHT,
action: function(){
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("1",tileNEX);
}
}
var radarButton = new buttonControl(radarOptions);
修改
这是我用于按钮和图层的当前更新代码。它会出现但是当我把它关闭时,它只会熄灭一秒然后再回来。
/
/set up custom buttons
var radarOptions = {
gmap: map,
name: 'Radar',
position: google.maps.ControlPosition.TOP_RIGHT,
action: function(){
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("1",tileNEX);
}
}
var radarButton = new buttonControl(radarOptions);
tileNEX = new google.maps.ImageMapType({
getTileUrl: function(tile, zoom) {
return "http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime();
},
tileSize: new google.maps.Size(256, 256),
opacity:0.70,
name : 'NEXRAD',
isPng: true
});
答案 0 :(得分:6)
你只需要清除它:
map.overlayMapTypes.clear();
或者,你可以弹出最新的:
map.overlayMapTypes.pop();
或者,如果您有多个图层,请获取所需图层的索引,并执行以下操作:
map.overlayMapTypes.removeAt(index);
编辑:
您可能需要使用以下内容替换操作:
action: function(){
if (map.overlayMapTypes.length==0) {
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("1",tileNEX);
}
else {
map.overlayMapTypes.clear();
}
}
我知道你的页面加载时,如果你打开控制台并运行map.overlayMapTypes.length
它会输出0;一旦你击中雷达它输出2(不知道为什么它不是1,但无论如何)。所以我们做的是检查它是否有一个图层,如果没有,我们会做你的正常代码(因为它应该打开它)。如果它已经有一个,我们清除它们。您的代码可能有所不同,我假设此操作是您处理所有点击的地方,如果没有,您可能需要使用它。
上次修改:如果您收到错误消息“关于丢失}”,请找出放入}的位置。
var radarOptions = {
gmap: map,
name: 'Radar',
position: google.maps.ControlPosition.TOP_RIGHT,
action: function(){
if (map.overlayMapTypes.length==0) {
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("1",tileNEX);
}
else {
map.overlayMapTypes.clear();
}
}
}
var radarButton = new buttonControl(radarOptions);
tileNEX = new google.maps.ImageMapType({
getTileUrl: function(tile, zoom) {
return "http://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime();
},
tileSize: new google.maps.Size(256, 256),
opacity:0.70,
name : 'NEXRAD',
isPng: true
});
答案 1 :(得分:0)
如果要在索引处删除,请在设置位置将其删除:
map.overlayMapTypes.setAt(1,tileNEX);
要从索引中删除它,请使用此
:map.overlayMapTypes.removeAt(1, tileNex);