javascript - 更改开放图层中矢量要素的绘制属性

标签 javascript openlayers

我正在从服务器加载一个 shapefile,然后在 OpenLayers 中绘制它。 shapefile 包含超过 400,000 个具有不同不透明度的多边形。我需要设置不透明度和填充颜色,但 openlayers 似乎忽略了它,而是只绘制橙色方 block 。我在更改属性之前和之后使用 console.log(),它显示了我分配给它的内容。谁能告诉我为什么要这样做?

var green = {
    fill: true,
    fillColor: "#006633",
    fillOpacity: 1
};

var features = wkt.read(element);
if (featureNumber == 0){
 document.getElementById('result').innerHTML=element;
}
features = element.toString();
var bounds;
var b = features.indexOf('MULTIPOLYGON', 0);


var c = features.indexOf('MULTIPOLYGON', 40);
if (c == -1) {
    c = element.indexOf(':',b+1);
}

leftovers = features.substring(c,100000000000000000);

features = features.substring(b,c);


features = wkt.read(features);

if(features) {
    if(features.constructor != Array) {
        features = [features];
    }
    for(var i=0; i<features.length; ++i) {
        if (!bounds) {
            bounds = features[i].geometry.getBounds();
        } else {
            bounds.extend(features[i].geometry.getBounds());
        }

    }

    pointLayer.addFeatures(features);
    console.log(pointLayer.features[featureNumber].attributes );

    pointLayer.features[featureNumber].attributes = green;
    console.log(pointLayer.features[featureNumber].attributes );

    featureNumber++

     map.zoomToExtent(bounds);
    var plural = (features.length > 1) ? 's' : '';
    console.log('Feature' + plural + ' added');
    console.log('feature number: '+featureNumber)

    if (leftovers.indexOf('MULTIPOLYGON',0) != -1) {
        parseWKT(leftovers,shapefile);
    }

} else {
   final(leftovers, shapefile);
}

最佳答案

好吧,样式属于 .style 属性,而不是特征的 .attributes。如果它已经在 map 上,您还需要调用 redraw()

pointLayer.features[featureNumber].style = green;
pointLayer.redraw();

如果你想从默认样式开始,只是改变一些东西,你可以这样做:

var green = OpenLayers.Util.applyDefaults(green, OpenLayers.Feature.Vector.style['default']);
green.fill = true;
green.fillColor = "#006633";
green.fillOpacity = 1;
pointLayer.features[featureNumber].style = green;
pointLayer.redraw();

关于javascript - 更改开放图层中矢量要素的绘制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613081/

相关文章:

zooming - 如何自动缩放/平移到矢量图层中的所有特征?

openlayers - 获取要加载的图 block 总数

javascript - 我怎样才能做一个精确图像形状的鼠标悬停?

javascript - 如何连续播放视频而没有间隙

javascript - 显示: flex does not work时如何解决

OpenLayers 使用 BBOX 策略找出用户的缩放级别

click - 使标记可拖动和可点击

javascript - Openlayers - 从某个点获取纬度/经度时的投影问题

javascript - Internet Explorer 不写入 document.cookie?

javascript - AngularJs 函数形式未定义