[OpenLayers-Users] Changing single vector feature style overwrites other default values

Andreas Hocevar andreas.hocevar at gmail.com
Fri Jul 25 03:52:27 EDT 2008


Ian wrote:
> After drawing point features in a vector layer, when a single style 
> attribute is changed for a point it appears that its default values 
> are being overwritten. Specifically, if I only change the fillColor of 
> a point its default values are erased or changed. Example:
>
> var myFeatures = new OpenLayers.Layer.Vector("My Features");
>
> var testPt1 = new OpenLayers.Feature.Vector(new 
> OpenLayers.Geometry.Point(-118, 35));
> var testPt2 = new OpenLayers.Feature.Vector(new 
> OpenLayers.Geometry.Point(-117, 35));
> myFeatures.addFeatures([testPt1,testPt2]);
>
> testPt2.style = {fillColor: 'red'};
> myFeatures.drawFeature(testPt2);


By doing this, you override the default style for the feature, which 
will cause a minimal style to be used. Instead, you have to apply the 
defaults from your layer's styleMap or style. In your code snippet, this 
would be OpenLayers.Feature.Vector.style["default"]:

testPt2.style = OpenLayers.Util.applyDefaults({fillColor: "red"}, 
OpenLayers.Feature.Vector.style["default"]);

For more details on styling, see http://trac.openlayers.org/wiki/Styles

Regards,
Andreas.




More information about the Users mailing list