<div dir="ltr"><div class="gmail_default" style="font-family:courier new,monospace"><br></div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Ruben Oliveira</b> <span dir="ltr"><<a href="mailto:mail.roliveira@gmail.com">mail.roliveira@gmail.com</a>></span><br>

Date: Fri, Aug 23, 2013 at 10:39 AM<br>Subject: Re: [OpenLayers-Users] Fill an OpenLayers.Geometry.LinearRing<br>To: <a href="mailto:Juergen.Dankoweit@t-online.de">Juergen.Dankoweit@t-online.de</a><br><br><br><div dir="ltr">

<div style="font-family:'courier new',monospace">Hi <span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap">Jürgen,</span></div><div style="font-family:'courier new',monospace">
<span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap"><br></span></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap">Thank you so much for your reply.</span></div>


<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap">I got it working with your suggestion but I had to change this line:</span></div><div class="im">


<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap"><br></span></div><div style="font-family:'courier new',monospace">
<span style="font-family:arial,sans-serif;font-size:13px">pf.attributes = {strokecolor: "#123456", fillcolor: "#654321"};</span><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap"><br>


</span></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div></div><div style="font-family:'courier new',monospace">
<span style="font-family:arial,sans-serif;font-size:13px">to </span></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div>
<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px">pf.<b>style</b> = {stroke<b>C</b>olor: "#123456", fill<b>C</b>olor: "#654321"};</span><span style="font-family:arial,sans-serif;font-size:13px"><br>


</span></div><div style="font-family:'courier new',monospace"><br></div><div><font face="arial, sans-serif">Anyway, I realize that now, the layer's render intent definition is not working anymore. My expectation was that, although each feature vectors has their own style definitions, once it got selected, the layer's selected render intent would apply.</font></div>


<div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">So here's my code, more detailed:</font></div><div>
<font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">// create a select control</font></div><div><font face="arial, sans-serif"><div>
var selectControl = new OpenLayers.Control.SelectFeature(</div><div><span style="white-space:pre-wrap"> </span>[],</div><div> {clickout: true, toggle: false, multiple: false, hover: false, toggleKey: "ctrlKey", multipleKey: "shiftKey"}</div>


<div>);</div></font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">// create a layer and add it to map</font></div>
<div><font face="arial, sans-serif">// ////////////////////////////////////////////////////////////////////////</font></div><div><font face="arial, sans-serif"><div>
var layer_style = new OpenLayers.StyleMap({</div><div>            "select": new OpenLayers.Style(OpenLayers.Util.applyDefaults({</div><div>            <span style="white-space:pre-wrap">    </span><b>fillColor: "#626262",</b></div>


<div>            <span style="white-space:pre-wrap">      </span>strokeColor: "#111111"}, OpenLayers.Feature.Vector.style["select"]))</div><div>        });</div>
<div><br></div><div><br></div><div>var vectorLayer = new OpenLayers.Layer.Vector("layer", {</div><div> styleMap: layer_style,</div>
<div><span style="white-space:pre-wrap"> r</span>enderers: ['SVG', 'VML', 'Canvas']</div><div><span style="white-space:pre-wrap">                       </span>});</div>
<div><br></div><div><span style="white-space:pre-wrap"> </span>vectorLayer.events.on({"featureselected": function(e) {</div><div>  console.log(e.feature);</div>
<div> }});</div><div><br></div><div>map.addLayer(vectorLayer); // map was created previously<br></div><div><br></div><div>
// then I add a select control</div><div><br></div><div><div>map.addControl(selectControl);</div><div>selectControl.activate();</div>
<div>selectControl.setLayer(vectorLayer); // make layer "controllable"<br></div><div><br></div><div>// create the vector feature</div><div>
var fv = new OpenLayers.Feature.Vector(linearRing); // lineaRing is an instance of OpenLayers.Geometry.LinearRing created elsewere, not relevant to this case<br></div><div>fv.style = {strokeColor: "#00FF00",<b> fillColor: "#0000FF"</b>, fillOpacity: 0.5}; // this works as expected<br>


</div><div><br></div><div>// add feature to layer</div><div>vectorLayer.addFeatures([fv]);<br></div></div></font></div><div>
<font face="arial, sans-serif"><br></font></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap"><br></span></div>
<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap"><br></span></div><div style="font-family:'courier new',monospace">
<span style="font-family:arial,sans-serif;font-size:13px;white-space:nowrap">Because the layers styleMap states a render select intent to make </span><span style="font-family:arial,sans-serif">fillColor: "#626262" I was expecting the vector feature to have this fill color once selected, but instead it remains as </span><span style="font-family:arial,sans-serif">fillColor: "#0000FF"</span></div>


<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif"><br></span></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif"><br>


</span></div><div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif">Have any ideas how to specify a render intent to the Feature.Vector? I tried to do it like this:</span></div>


<div style="font-family:'courier new',monospace"><span style="font-family:arial,sans-serif"><br></span></div><div><div><font face="arial, sans-serif">fv.style = new OpenLayers.StyleMap({</font></div>
<div><font face="arial, sans-serif"><span style="white-space:pre-wrap">           </span>            "default": new OpenLayers.Style(OpenLayers.Util.applyDefaults({</font></div><div>
<font face="arial, sans-serif"><span style="white-space:pre-wrap">              </span>            <span style="white-space:pre-wrap">    </span>fillColor: "#FF0000",</font></div><div><font face="arial, sans-serif"><span style="white-space:pre-wrap">              </span>            <span style="white-space:pre-wrap">    </span>strokeColor: "#919191",</font></div>


<div><font face="arial, sans-serif"><span style="white-space:pre-wrap">           </span>            <span style="white-space:pre-wrap">    </span>fillOpacity: 0.5</font></div><div>
<font face="arial, sans-serif"><span style="white-space:pre-wrap">              </span>            <span style="white-space:pre-wrap">    </span>}, OpenLayers.Feature.Vector.style["default"])),</font></div><div>
<font face="arial, sans-serif"><span style="white-space:pre-wrap">              </span>            "select": new OpenLayers.Style(OpenLayers.Util.applyDefaults({</font></div><div><font face="arial, sans-serif"><span style="white-space:pre-wrap">         </span>            <span style="white-space:pre-wrap">    </span>fillColor: "#00FF00",</font></div>


<div><font face="arial, sans-serif"><span style="white-space:pre-wrap">           </span>            <span style="white-space:pre-wrap">    </span>strokeColor: "yellow",</font></div><div>
<font face="arial, sans-serif"><span style="white-space:pre-wrap">              </span>            <span style="white-space:pre-wrap">    </span>fillOpacity: 0.5}, OpenLayers.Feature.Vector.style["select"]))</font></div>
<div><font face="arial, sans-serif"><span style="white-space:pre-wrap">           </span>        });</font></div><div><font face="arial, sans-serif"><br></font></div><div>
<font face="arial, sans-serif">But it appears that the </font><span style="font-family:arial,sans-serif">OpenLayers.Feature.Vector object doesn't accept an </span><span style="font-family:arial,sans-serif">OpenLayers.StyleMap object.</span></div>


<div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">Thanks again.</span></div>
<div><span style="font-family:arial,sans-serif">Ruben</span></div></div></div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">On Thu, Aug 22, 2013 at 6:50 PM, Jürgen Dankoweit <span dir="ltr"><<a href="mailto:Juergen.Dankoweit@t-online.de" target="_blank">Juergen.Dankoweit@t-online.de</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Ruben,<br>
<br>
Am 22.08.2013 19:34, schrieb <a href="mailto:mail.roliveira@gmail.com" target="_blank">mail.roliveira@gmail.com</a>:<br>
<div>> How can I set the fill and stroke colors of<br>
> a OpenLayers.Geometry.LinearRing<br>
</div>> <<a href="http://dev.openlayers.org/docs/files/OpenLayers/Geometry/LinearRing-js.html#OpenLayers.Geometry.LinearRing" target="_blank">http://dev.openlayers.org/docs/files/OpenLayers/Geometry/LinearRing-js.html#OpenLayers.Geometry.LinearRing</a>>?<br>



<div>><br>
> I tried this way but no success:<br>
><br>
> var linearRing = new OpenLayers.Geometry.LinearRing(pointArray);<br>
><br>
> var feature = new OpenLayers.Feature.Vector(linearRing, {}, {fillColor:<br>
> "#00FF00"})<br>
><br>
> feature is latter added to an OpenLayers.Layer.Vector layer.<br>
><br>
> Is I set the style of the layer, I can paint the linearRing, but I have<br>
> several linearRings added on the same layer, and I want to have<br>
> individual fill on each one of the linearRings.<br>
<br>
</div>In your styleMap-definition you have to define some placeholders. Look here:<br>
<br>
var sm = new OpenLayers.StyleMap({<br>
 stroke: true,<br>
 strokeColor: "\${strokecolor}",<br>
 fill: true,<br>
 fillColor: "\$fillcolor}<br>
});<br>
layer = new OpenLayers.Layer.Vector("LinearRings", {<br>
 styleMap: sm, ...});<br>
<br>
You have to use this like in the following example:<br>
<br>
var pf = new OpenLayers.Feature.Vector(...);<br>
if (pf) {<br>
 pf.attributes = {strokecolor: "#123456", fillcolor: "#654321"};<br>
 layer.addFeatures([pf]);<br>
}<br>
<br>
Best regards<br>
<br>
Juergen<br>
<span><font color="#888888"><br>
--<br>
Meine stets unfertige Homepage: <a href="http://www.dankoweit.de" target="_blank">www.dankoweit.de</a><br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.osgeo.org" target="_blank">Users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/openlayers-users" target="_blank">http://lists.osgeo.org/mailman/listinfo/openlayers-users</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><span style="font-family:courier new,monospace">Melhores cumprimentos / Best regards,</span><b style="font-family:courier new,monospace"><br>

Ruben Oliveira</b><br>

</font></span></div>
</div><br><br clear="all"><div><br></div>-- <br><span style="font-family:courier new,monospace">Melhores cumprimentos / Best regards,</span><b style="font-family:courier new,monospace"><br>Ruben Oliveira</b><br>
</div>