【问题标题】:openlayers3 : ol.style.Icon in vectorContext.setStyle can not work?openlayers3:在vectorContext.setStyle ol.style.Icon 不能工作?
【发布时间】:2017-01-17 03:55:06
【问题描述】:

这个例子展示了如何使用 postcompose 和 vectorContext 为特征设置动画:

http://openlayers.org/en/latest/examples/feature-animation.html

我尝试替换这些行中的样式:

var style = new ol.style.Style({
    image: new ol.style.Circle({
        radius: radius,
        snapToPixel: false,
        stroke: new ol.style.Stroke({
            color: 'rgba(255, 0, 0, ' + opacity + ')',
            width: 0.25 + opacity
        })
    })
});

vectorContext.setStyle(style);

当我将样式替换为 img 样式时,如下所示:

var style = new ol.style.Style({
    image: new ol.style.Icon(({
        src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png'
    }))
});

它不起作用并引发错误:无法读取 null 的属性“0”

这是一个错误吗?或者我该如何使用img样式呢?

【问题讨论】:

标签: openlayers-3


【解决方案1】:

如果要添加图像而不是普通的Point,则无需将样式更改为animate函数。

您可以通过这种方式将所需的样式添加到矢量图层中:

var vector = new ol.layer.Vector({
    source: source,
    style: new ol.style.Style({
        image: new ol.style.Icon(({
            src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png'
        }))
    })
});

我编辑了您的 jsfiddle,但没有为 vectorContext 设置任何样式。如果你想获得一些动画,比如在 Openlayers 站点示例中,你只需要通过在 jsfiddle 代码中取消注释来添加旧样式。

【讨论】:

  • 谢谢,我想做一个动画:一个红点沿线移动,像这样:jsfiddle.net/codingmiao/9gou6rwL/9,并将红点替换为图像样式,但我失败了..
  • 您的问题中没有明确描述您想要的内容,这就是为什么我鼓励您对其进行编辑,以便每个人都能理解您的意思。您在问题的评论中添加的 jsfiddle 示例也相当具有误导性。但是,您可以在此处找到动画中带有自定义图标的点示例:jsfiddle.net/m0wj9mL2/1
  • 我发现它为什么不起作用了:ol.style.Icon 是直接在“vectorContext.drawFeature”中使用的,而在其他地方却不是在渲染之前。例如,要将示例的第 69 行更改为“功能:[routeFeature1]”,它将不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2015-02-12
相关资源
最近更新 更多