ThinkGeo.com    |     Documentation    |     Premium Support

Something I do not understand

Hi,


After finding that having the map control defined inside the view was limiting options like drag markers... I moved away from having the control defined inside the view...  Now I have the map control defined inside the controller index method and I do return it to the view when ready ...   Well so far so good but i am now finding that overlays / layers do not behave anymore in a way that I was used to.


For instance,  using layer name property as indexer does not work anymore....


Before I was able to access the properties of my "STATES" layer within the "layerOverlay_USA_GEO_POSTAL" overlay but now doing so generate an exception????    


could you advice? 


my code:


 


 




  [MapActionFilter]
        public JsonResult loadStates(Map map, GeoCollection<object> args)
        {
            JsonResult _JsonResult = null;

            _redrawLayers.Clear();

            if (map != null)
            {
                Proj4Projection proj4 = _geospatialDomain.Prj4Mercator();
                proj4.Open();
                LayerOverlay layerOverlay_USA_GEO_POSTAL = (LayerOverlay)map.CustomOverlays["layerOverlay_USA_GEO_POSTAL"];
                Layer _tmp = layerOverlay_USA_GEO_POSTAL.Layers.Where(l => l.Name == "STATES").FirstOrDefault();
                if (_tmp != null)
                {
                    if (_tmp.Name == "STATES")
                        if (layerOverlay_USA_GEO_POSTAL.Layers["STATES"].IsVisible)
                            layerOverlay_USA_GEO_POSTAL.Layers["STATES"].IsVisible = false;
                        else
                            layerOverlay_USA_GEO_POSTAL.Layers["STATES"].IsVisible = true;
                }
                else
                {
                    layerOverlay_USA_GEO_POSTAL.Layers.Add(_geospatialDomain.LoadStatesShapes(_geospatialDomain.Prj4Mercator()));
                }
                proj4.Close();

                _redrawLayers.Add("layerOverlay_USA_GEO_POSTAL");

                _JsonResult = Json(_DtoDomain.EnveloppeDto(null, _redrawLayers, new ErrorPayload { code = 0, message = "SUCCESS", status = "SUCCESS" }), JsonRequestBehavior.AllowGet);

            }
            else
            {
                _JsonResult = Json(_DtoDomain.EnveloppeDto(null, null, new ErrorPayload { code = 2001, message = "ERROR", status = "ERROR" }), JsonRequestBehavior.AllowGet);
            }
            return (_JsonResult);
        }


Hi Jean-marie, 
  
 It looks your code no problem. 
  
 So what’s the exception and could you built a simple sample so we can easily help you find the reason of the exception? 
  
 Regards, 
  
 Don

Hi Don, 
  
 Well it is simple, why when using the layer name as indexer to access it inside the overlay it is generating an exception… 
  
 jm

 Hi JM,



 


We have tried to recreate your problem, but the problem still didn’t show up. Attached is our sample, would you please check it and tell us what we missed?


 


Johnny



Post11279.txt (1.35 KB)

Hi Johnny, 
  
 I don’t really understand what is going on but surely there is a bug or something that I am not aware of… 
  
 In your current samples you do instantiate the layer using this kind of code:  
  
  InMemoryFeatureLayer inmLayer = markerOverlay.Layers[“name”] as InMemoryFeatureLayer; 
  
 what if you do use it like this: 
  
 layerOverlay_USA_GEO_POSTAL.Layers[“STATES”].IsVisible = true; 
  
 I have the feeling that accessing the property of an InMemoryFeatureLayer like this does not work anymore??? 
  
 Was working fine till very recently. 
  
 jm. 
  


Hi JM,

  

 

  

After replacing the code with code like  “layerOverlay_USA_GEO_POSTAL.Layers["STATES"].IsVisible = true;” the  problem still didn’t show up, attached is our sample code, would  you  please provide us more information like the dls version, the layer’s setting,  etc. or if possible, a “self-contained” sample is highly appreciated.

  

 

  

About “the map control defined inside the view  was limiting options like drag markers”, the “drag makers” functionality is  implemented in the newest dlls, But now our code is frozen for some amendment  for 7.0 release, the new dlls will be available in couple of days

  

 

  

Sorry for the inconvenience

  

 

  

Summer



Post11279Sample.txt (2.16 KB)