多次单击控件 - 在添加控件之前是否必须将图层添加到地图中?

时间:2012-03-16 14:23:06

标签: openlayers

此代码可以正常工作,但它似乎依赖于在添加控件之前添加到地图的图层。总是这样,还是我做错了什么?

          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();

1 个答案:

答案 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