【问题标题】:Unable to select vector when hover is active悬停时无法选择矢量
【发布时间】:2012-06-13 23:23:51
【问题描述】:

好吧,我希望在悬停时弹出一个漂亮的弹出窗口,但我也希望矢量可以选择。 如果我跳过悬停部分,它就像魅力一样,但是:/ 有什么我错过了吗?

vectors.removeAllFeatures();
var geojson_format = new OpenLayers.Format.GeoJSON();
vectors.addFeatures(geojson_format.read(data));
var selectCtrl = new OpenLayers.Control.SelectFeature(vectors,
{
    clickout: true
});
map.addControl(selectCtrl);
selectCtrl.activate();
vectors.events.on({
    "featureselected": featureSelected
});
var hover = new OpenLayers.Control.SelectFeature(vectors,{
    hover: true,
    highlightOnly: true,
    eventListeners: {
         featurehighlighted: featureHover,
         featureunhighlighted: featureUnHover
    }
});
map.addControl(hover);
hover.activate();

【问题讨论】:

    标签: javascript gis openlayers


    【解决方案1】:

    我只是以错误的顺序编写了代码。 map.addControl(hover); hover.activate(); 应该在

    之前
    map.addControl(selectCtrl);
     selectCtrl.activate();
     vectors.events.on({
         "featureselected": featureSelected
     });
    

    所以,现在可以了!

    【讨论】:

      【解决方案2】:

      这真的有效吗,因为在我看来,一旦您使用 OpenLayers.Control.SelectFeature 创建了 2 个 map.addControl,就有 1 个无效。事实上,我有 2 层,一个公共汽车层和一个公共汽车站层。当我全部激活它们时,只有在总线层上的悬停有效。当我没有激活 buslayer 的 controle 时,突然 bus-stops 层开始工作。所以他们都单独工作。您在这里的问题是关于我在这里找到的唯一一个带有 2 个 addControl 行的问题。我也尝试使用 autoActivate 但结果相同。

      更新

      它实际上是打算不再工作的,显然你不能创建 2 个控制功能。相反,您需要创建一个并将其应用于两个图层。对此的支持是removed in 2.7 as stated in the docs。有一个很好的例子来说明如何使用2 different Vector Layers 做到这一点。 这让我花了好几天才意识到。您只需要在弹出窗口中确定您所在的图层并采取相应的行动即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多