2012-11-28 98 views
1

我從服務器加載shapefile並將其繪製爲OpenLayers。 shapefile包含超過400,000個不透明度的多面體。我需要設置不透明度和填充顏色,但openlayers似乎忽略它,只是繪製橙色方塊。我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); 
} 

}

回答

4

以及風格所屬的.style屬性的功能不是.attributes。如果它已經在地圖上,您還需要撥打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(); 
+0

感謝您的幫助! –