获取在ol3中拖放kml文件的样式

时间:2014-05-04 14:48:13

标签: openlayers-3

使用ol3来创建一些自定义地图。

我拖放从Google Mymaps导出的KML文件,效果很好。我想获得它附带的样式,所以我可以改变它们,例如笔触颜色。

我看到使用feature.getKeys有一个名为styleUrl的密钥并使用feature.get('styleUrl')我看到它的值是#style5

如何从该样式中获取笔触颜色?

我已经开始考虑使用Chrome控制台时所能想到的一切,但无济于事。

1 个答案:

答案 0 :(得分:0)

实际样式保存在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;
});

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