在打开的图层中更改ol.geom.LineString的颜色3

时间:2016-02-03 10:41:58

标签: javascript android openlayers-3

我正在尝试在我的Android应用程序中编写一些javascript,它将根据通过Android的PolyLineOptions对象传入的值从一个点到另一个点绘制一条线。

我已经编写了几个JSInterfaces来获取PolyLineOptions对象的相关信息,例如latlng和color,我可以让它画出细线,但是当我尝试改变它的颜色时,它不会做任何事情,我甚至尝试改变宽度,但仍然没有。

注意:我已经将颜色值写入日志并且它正确地通过,因此所有JSInterface内容都按预期工作。

function drawPolyLine(polyLine){

if(polyLine != null){

    var list = window.JSInterface.getPointsFromPolyLine(polyLine)

    var count = window.JSInterface.getLengthFromLatLngList(list)

    for(var i = 0; i < count; i+=2)
    {
        var lat1 = window.JSInterface.getLatFromLatLngList(list, i);
        var lng1 = window.JSInterface.getLngFromLatLngList(list, i);
        var lat2 = window.JSInterface.getLatFromLatLngList(list, i+1);
        var lng2 = window.JSInterface.getLngFromLatLngList(list, i+1);

        var coordinates = [[lng1,lat1],[lng2,lat2]];

        var lineString = new ol.geom.LineString(coordinates);
        lineString.transform('EPSG:4326', 'EPSG:3857');

        var color = window.JSInterface.getColorFromPolyLine(polyLine);

      var styles = [
        // linestring
        new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: '#ffcc33',
            width: 2
          })
        })
      ];

        var line = new ol.Feature({
                    geometry: lineString,
                    name: 'Line',
                    style: styles
                });
        linesSource.addFeature(line);

    }
}

}

有人能帮助我弄清楚我做错了什么吗?这似乎完全忽略了风格。我猜它的东西很傻但我却看不到它。

1 个答案:

答案 0 :(得分:2)

我已经弄清楚了。事实证明,在创建需要使用的功能时,不允许您设置样式:

            var line = new ol.Feature({
                    geometry: lineString,
                    name: 'Line',
                    //style: styles
                });

                line.setStyle(styles);

我不明白为什么,所以如果有人可以解释那么随便回答,我会将你的答案标记为正确。