【问题标题】:Setting different formatting for mouseover and select in OpenLayers?在 OpenLayers 中为鼠标悬停和选择设置不同的格式?
【发布时间】:2026-02-09 09:00:02
【问题描述】:

我在开放层中有一个矢量图层。 http://www.geos.ed.ac.uk/~s0825955/cgi-bin/maps6.pl

选择后,它会使用选定的格式意图,还会弹出一个弹出窗口。我希望在鼠标移到图层上时显示所选格式,并且仅在单击该功能时才显示弹出窗口。

我尝试将{hover: true} 添加到SelectFeature 控件,但这会使您在地图上移动鼠标时出现弹出窗口。

我还尝试添加第二个功能控件,弹出窗口不听,但样式映射也无法识别。

有没有什么方法可以让我在没有选择功能的情况下使用不同的悬停风格?

【问题讨论】:

    标签: javascript styles hover openlayers mouseover


    【解决方案1】:

    一次只能激活一个 SelectFeature 控件,除非第二个控件具有属性highlightOnly = true。来自 OpenLayers 文档:

    highlightOnly{Boolean} - 如果 true 不实际选择特征(即将它们放在图层的选定特征数组中),只需突出显示它们。

    尝试添加第二个仅更改样式的 SelectFeature 控件。它应该是这样的:

    var hover_feature_control = new OpenLayers.Control.SelectFeature(
        [your_layer],
        {
            hover: true,
            highlightOnly: true,
            renderIntent: "temporary"
        }
    );
    

    renderIntent 属性应与您希望悬停在样式图中的样式名称相匹配。

        styleMap: new OpenLayers.StyleMap({
            'default': default_marker_style,
            'temporary': hover_marker_style
        })
    

    确保从管理弹出窗口的控件中删除 {hover: true}

    【讨论】: