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

Openlayers 3 获取ol3中拖放的kml文件的样式,openlayers-3,Openlayers 3,使用ol3创建一些自定义地图 我拖放了一个从GoogleMyMaps导出的KML文件,效果非常好。我想得到它附带的样式,这样我就可以改变它们,比如笔划颜色 我看到使用feature.getKeys有一个名为styleUrl的键,使用feature.get('styleUrl')我看到它的值是\style5 如何从该样式中获得笔划颜色 我已经用Chrome控制台尝试了我能想到的一切,但都没有用。实际样式保存在KML格式的对象中,并通过它在功能上设置的样式函数作为闭包进行访问。这意味着样式本身无法访

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

我拖放了一个从GoogleMyMaps导出的KML文件,效果非常好。我想得到它附带的样式,这样我就可以改变它们,比如笔划颜色

我看到使用
feature.getKeys
有一个名为styleUrl的键,使用
feature.get('styleUrl')
我看到它的值是\style5

如何从该样式中获得笔划颜色


我已经用Chrome控制台尝试了我能想到的一切,但都没有用。

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

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

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

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

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;
});
var oldStyleFunction=feature.getStyle();
功能设置样式(功能(分辨率){
var styles=oldStyleFunction.apply(这是参数);
对于(变量i=0;i

上面的示例代码不操纵样式,但这是一个很好的开始,它将向您显示样式笔划颜色。

在感兴趣的对象上尝试
console.log
console.dir