OpenLayers3在样式函数

时间:2017-07-19 16:53:51

标签: angular openlayers-3

我有一个我创建的Angular2 / 4应用程序,它使用OpenLayers3为沙盒游戏Wurm Online渲染岛屿的地图。它的工作非常精美,取代了我用纯JS创建的旧版本。

当前演示:http://www.wurmonlinemaps.com/maps/xanadubeta

代码回购:https://github.com/WefNET/wurmonlinemaps-ng

我想向最终用户提供自定义屏幕上呈现的某些功能的颜色的功能。最后,我想使用localStorage概念来保存用户首选项。

我希望工作不起作用:将矢量图层的stylefuncton中的样式属性设置为Angular类属性值。

基本概念

在这个伪代码示例中,“deedColor”Angular类属性设置为一个值,然后我尝试在样式函数中使用它:

export class AppComponent {
    deedColor: string = "rgba(255,0,0,0.4)";

    var deedStyleFunction = function (feature, resolution) {
        return [
        new ol.style.Style({
          image: new ol.style.RegularShape({
              points: 4,
              radius: 11 / resolution,
              angle: Math.PI / 4,
              fill: new ol.style.Fill({
                  color: this.deedColor
           }),
        })
      ]
    }

    // hundreds of other lines
}

可悲的是,样式函数无法找出Angular类属性:

ERROR TypeError: Cannot read property 'deedColor' of undefined

经过一些实验,我似乎无法从OL StyleFunction中访问任何Angular对象。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这可能是范围问题 - 尝试将您的函数绑定到ng对象:

deedStyleFunction = function(feature, resolution) {

}.bind(this);