Mit*_*ram 8 javascript openlayers
我不知道为什么这不起作用.我认为答案非常简单.我需要在添加新图层之前删除图层.
if (graphic) {
window.map.removeLayer(graphic);
}
var graphic = new OpenLayers.Layer.Image(
'Sightline'+''+SC,
url,
new OpenLayers.Bounds(derWesten[0].firstChild.nodeValue,derSueden[0].firstChild.nodeValue,derOsten[0].firstChild.nodeValue, derNorden[0].firstChild.nodeValue),
new OpenLayers.Size(0,0),
options
);
window.map.addLayer(graphic);
Run Code Online (Sandbox Code Playgroud)
它只是在层上堆积而不是删除任何层.有帮助吗?
bat*_*koo 14
您的if语句将始终评估为false,因为graphic每次运行该部分代码时都会重新声明.变量被提升,并且在评估时它的值将是未定义的if.
您需要在不同的范围内声明变量:
var graphic;
function removeAddLayer() {
if (graphic) {
window.map.removeLayer(graphic);
}
graphic = new OpenLayers.Layer.Image( /* stuff */); // note: no 'var' in front of graphic
window.map.addLayer(graphic);
}
Run Code Online (Sandbox Code Playgroud)
小智 9
使用map.getLayersByName(layerName)获取图层.您可能需要跟踪某些数组中的图层名称或其他内容
该方法返回一个数组,因此您将遍历图层数组并使用map.removeLayer(layer).
如果需要,可以将此解决方案外部化为不同的功能.
| 归档时间: |
|
| 查看次数: |
30795 次 |
| 最近记录: |