openlayers-3 - 获取ol3中拖放kml文件的样式

标签 openlayers-3

用 ol3 来创建一些自定义 map 。

我拖放一个从 Google Mymaps 导出的 KML 文件,效果非常好。我想要获取它附带的样式,这样我就可以更改它们,例如描边颜色。

我使用 feature.getKeys 看到有一个名为 styleUrl 的键,使用 feature.get('styleUrl') 我看到它的值为 #风格5.

如何从该样式中获取描边颜色?

我已经用 Chrome 控制台尝试了所有我能想到的东西,但都无济于事。

最佳答案

实际样式保存在 KML 格式的对象中,并通过它在要素上设置的样式函数作为闭包进行访问。这意味着样式本身无法访问。

但是,您仍然可以访问和操作样式值。该功能的 getStyle 方法将返回样式、样式数组或样式函数。在这种情况下,KML 格式设置样式函数。

使用给定的分辨率调用此函数并返回样式数组。如果您确定样式是静态的并且不依赖于分辨率,则可以仅使用任意分辨率调用样式函数来获取样式。

但是,如果您不确定样式函数如何确定返回值,您可以创建一个中间样式函数:

var oldStyleFunction = feature.getStyle();
feature.setStyle(function(resolution){
    var styles = oldStyleFunction.apply(this, arguments);
    for(var i = 0; i < styles.length; i++){
        var stroke = styles[i].getStroke();
        if (stroke != null) {
            console.log('style ' + i + ' stroke color: ' + stroke.getColor() + ' at resolution ' + resolution)
        }
    }
    return styles;
});

上面的示例代码不会操作样式,但它是一个很好的开始,并将向您显示样式描边颜色。

关于openlayers-3 - 获取ol3中拖放kml文件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23457583/

相关文章:

javascript - 即时更改绘图工具

javascript - 将mapbox-style转换为openlayers 3 vectorTile样式

javascript - 修改 OpenLayers 3 中现有图层的值

javascript - Openlayers 3 - 将点插入到沿线某处之间的 LineString 中

openlayers-3 - 将 MultiPolygon 特征的标签限制为一个标签

javascript - 如何获取给定特征的图层

openlayers-3 - 是否可以为 LineString 的每个段设置不同的颜色而不会造成巨大的性能损失?

javascript - 需要在OL3中克隆图层

javascript - 如何获得 map 边界?

javascript - Openlayers-3 栅格图层在源更改时不更改