我正在向 OpenLayers 面板添加一些 toggle_type 按钮来打开/关闭矢量图层(每个按钮控制矢量图层的可见性)。该地图也有一个 selectFeature 事件监听器,它在另一个 div 中显示特征属性。
它仅在为一层编码时起作用。但是,如果我将代码更改为使用数组来添加多个图层,问题就开始了。我使用一个数组 (capasVectoriales) 来存储从 JSON 文件创建的矢量图层。这样做,按钮触发的停用功能开始做一些奇怪的事情,不删除图层并将要素“打印”在地图上(平移和缩放时不移动)。当我再次激活按钮时,功能会按预期运行。我可以使用 Firebug 中的 map.removeLayer(map.layers[1]) 删除图层。这是代码,
function init() { .....
capaRestauracion=capasVectoriales[0];
var funcionActivarRestauracion= function() {
map.addLayer(capaRestauracion);
console.log('turn on' + capaRestauracion.name);
};
var funcionDesactivarRestauracion= function() {
map.removeLayer(capaRestauracion);
console.log('turno off ' + capaRestauracion.name);
};
// create type_toggle button
var botonRestauracion = new OpenLayers.Control.Button({
displayClass : 'boton' + capa,
eventListeners : {
'activate' : funcionActivarRestauracion,
'deactivate' : funcionDesactivarRestauracion
},
title : 'Activar/Desactivar ' + capa,
type : OpenLayers.Control.TYPE_TOGGLE
});
//create an external panel
panelExterno = new OpenLayers.Control.Panel({
div : document.getElementById("panel")
});
//add buttons to external panel
panelExterno.addControls([botonRestauracion]);
// add panel to map
map.addControl(panelExterno);
//activate button
panelExterno.controls[0].activate();
// create the select feature control
var selector = new OpenLayers.Control.SelectFeature(capasVectoriales, {
hover : true,
autoActivate : true
});
map.addControl(selector);
当我尝试用“capaVectorial [0]”数组项替换“capaVectorial”变量时似乎出现问题,但不明白为什么。