【问题标题】:Get styles of drag and dropped kml file in ol3在ol3中获取拖放kml文件的样式
【发布时间】:2014-05-04 14:48:13
【问题描述】:

玩弄 ol3 来创建一些自定义地图。

我拖放了一个从 Google Mymaps 导出的 KML 文件,效果很好。我想获取它附带的样式,以便可以更改它们,例如笔触颜色。

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

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

我用 Chrome 控制台浏览了所有我能想到的东西,但无济于事。

【问题讨论】:

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

标签: openlayers-3


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多