此代码可以正常工作,但它似乎依赖于在添加控件之前添加到地图的图层。总是这样,还是我做错了什么?
var highlightCtrl = new OpenLayers.Control.SelectFeature([a,b], {
hover: true,
highlightOnly: true,
renderIntent: "temporary",
eventListeners: {
featurehighlighted: make_popup,
featureunhighlighted: kill_popup
}
});
var selectControl = new OpenLayers.Control.SelectFeature([a,b,c,d], {
clickout: true,
toggle: false,
multiple: false,
hover: false
});
map.addLayer(a);
map.addLayer(b);
map.addLayer(c);
map.addLayer(d);
map.addControl(highlightCtrl);
map.addControl(selectControl);
highlightCtrl.activate();
selectControl.activate();
答案 0 :(得分:1)
不,在添加控件之前,它不依赖于添加到地图的图层。正如您从this example所看到的那样。您可以添加SelectFeature控件并在将图层添加到地图之前将其激活。
相关的一段代码:
var selectControl = new OpenLayers.Control.SelectFeature(vectorLayer, {
hover: false,
highlightOnly: false,
toggle: false,
renderIntent: "select"
});
map.addControl(selectControl);
selectControl.activate();
map.addLayer(vectorLayer); //<-- layer added at the end