[OpenLayers-Users] Edit circles not showing when styleMap isspecified

Arnd Wippermann arnd.wippermann at web.de
Mon Dec 15 12:22:59 EST 2008


There is a property virtualStyle for the ModifyFeature Control. Perhaps this
has to set.

I do this before I add the controls:

OpenLayers.Feature.Vector.style['select']['fillColor']    = 'yellow';
OpenLayers.Feature.Vector.style['select']['strokeColor']  = 'yellow';

var selectStyle = OpenLayers.Util.extend({},
OpenLayers.Feature.Vector.style['select']);

ctrlSelectFeature.selectStyle = selectStyle;

ctrlModifyFeature.virtualStyle = selectStyle;

Arnd Wippermann
 

-----Ursprüngliche Nachricht-----
Von: users-bounces at openlayers.org [mailto:users-bounces at openlayers.org] Im
Auftrag von Jan van der Ven
Gesendet: Montag, 15. Dezember 2008 15:23
An: users at openlayers.org
Betreff: Re: [OpenLayers-Users] Edit circles not showing when styleMap
isspecified

Dear Alexandre,


Thanks for the quick reply.

I tried it out right away, and modified the code as shown below:

  function addGeoJSONLayers()
  {
    for(i=0; i<nLayers; i++)
    {
      mystyles = new OpenLayers.StyleMap(
        {
          "default": new OpenLayers.Style({
          })
        });

      myrules = new OpenLayers.Rule({symbolizer:{fillColor:stateColors[i],
strokeColor:stateColors[i], strokeWidth:2, fillOpacity:0.4},
elseFilter:true});
      mystyles.styles["default"].addRules(myrules);
      var laag = new OpenLayers.Layer.GML(stateNames[i], biskurl +
"html/kml/" + stateNames[i] + ".geojson", {format:OpenLayers.Format.GeoJSON,
projection: new OpenLayers.Projection("EPSG:28993"), resolutions:ress,
visibility:false, styleMap:mystyles }); [...]

Unfortunately, the behavior still is that the handles do not appear.

Kind regards,


Jan
 

-----Original Message-----
From: Alexandre Dube [mailto:adube at mapgears.com]
Sent: Monday, December 15, 2008 14:56
To: j.vanderven at magion.nl
Cc: users at openlayers.org
Subject: Re: [OpenLayers-Users] Edit circles not showing when styleMap is
specified

Hi Jan,

I also had this problem and resolved it by adding theses lines :

rules = [new OpenLayers.Rule({
symbolizer: {strokeColor:"red",strokeWidth: 2},
elseFilter: true
})];
styles.styles["default"].addRules(rules);

Hope this helps,

Alexandre


Jan van der Ven wrote:
> Dear list,
>
>
>
> I have a map to which I add nine vector layers (all polygons). The 
> layers all should have their own color for rendering the features. I 
> have too many features to put them all in one layer, and use an 
> attribute
to style them.
>
> The code I have for this is as follows:
>   /**
>    * Add the GeoJSON Layers
>    **/
>   function addGeoJSONLayers()
>   {
>     for(i=0; i<nLayers; i++)
>     {
>       var styles = new OpenLayers.StyleMap({
>         "default": new OpenLayers.Style({
>            fillColor:stateColors[i],
>            strokeColor:stateColors[i],
>            strokeWidth:2,
>            fillOpacity:0.4
>         })
>       });
>       var laag = new OpenLayers.Layer.GML(stateNames[i], url + 
> "html/kml/" + stateNames[i] + ".geojson",
{format:OpenLayers.Format.GeoJSON, projection:
> new OpenLayers.Projection("EPSG:28993"), resolutions:ress, 
> visibility:false, styleMap:styles});
>       laag.events.on({"featuremodified": onFeatureModified});
>       map.addLayer(laag);
>
>       // These are the ones the user may work with
>       selectControls[i]=new
OpenLayers.Control.SelectFeature(laag,{onSelect:
> onFeatureSelect, onUnselect:onFeatureUnselect, toggleKey:"ctrlKey", 
> multipleKey:"shiftKey", hover:false, toggle:false, clickout:false, 
> multiple:true, box:false});
>       map.addControl(selectControls[i]);
>     }
>   }
>
> I know only the topmost layer has an 'active' selectControl.
>
> There is a button that the user can click to go from "select" mode to
"edit"
> mode. This essentially turns off all selectControls and creates and 
> activates a ModifyFeature control for the top layer:
>       modifyControl = new
> OpenLayers.Control.ModifyFeature(map.getLayersByName(stateNames[top])[
> 0], {mode:OpenLayers.Control.ModifyFeature.RESHAPE});
>       map.addControl(modifyControl);
>       modifyControl.activate();
>
> The problem is that if the styleMap entry is present when creating the 
> layer, the edit handles (the circles) do not become visible and the 
> mouse cursor does not changes when moving to the corners of the 
> polygon. But, if I comment out the styleMap, like so:
>
>       var laag = new OpenLayers.Layer.GML(stateNames[i], url + 
> "html/kml/" + stateNames[i] + ".geojson",
{format:OpenLayers.Format.GeoJSON, projection:
> new OpenLayers.Projection("EPSG:28993"), resolutions:ress, 
> visibility:false /*, styleMap:styles*/});
>
> It works as expected.
>
> My questions are:
> 1) Is this the right way to set the color for a layer?
> 2) If so, why would that influence the ModifyFeature control?
> 3) What can I do to fix this?
>
> Thanks in advance.
>
> Kind regards,
>
>
>
> Jan van der Ven
>
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>   


--
Alexandre Dubé
Mapgears
www.mapgears.com

No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.176 / Virus Database: 270.9.16/1842 - Release Date: 14-12-2008
12:28

_______________________________________________
Users mailing list
Users at openlayers.org
http://openlayers.org/mailman/listinfo/users




More information about the Users mailing list