ThinkGeo.com    |     Documentation    |     Premium Support

The projection is not open. Please open it before calling this method

I added the following lines of code to a controller class that manages my map instances so that I can change base map from WorldMapKit to OpenStreetMaps, Google or Bing.       


var featureLayers = map.GetFeatureLayers();
var proj4Projection = new ManagedProj4Projection();
proj4Projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
proj4Projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString(); 
 
foreach (var featureLayer in featureLayers)
{
    featureLayer.FeatureSource.Projection = proj4Projection;
}
map.SafelyRefresh();


When I run the application, I now get error:  “The projection is not open.  Please open it before calling this method”.   I am not explicitly calling FeatureSource.Open any where in these feature layers so do not know the proper way to correct this.



Based on a similar problem reported here, I tried creating a projection object for each layer and this still fails with the aforementioned error.





var featureLayers = map.GetFeatureLayers();
         foreach (var featureLayer in featureLayers)
         {
             var proj4Projection = new ManagedProj4Projection();
             var srid = ViewState.ProjectionSRID;
             proj4Projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(srid);
             proj4Projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString(); 
 
             featureLayer.FeatureSource.Projection = proj4Projection;
         }


How do I handle this?



Klaus

Hello Klaus, 
  
 Thanks for your post and welcome to Map Suite Forums! 
  
 Actually, even we didn’t call the FeatureSource.Open method explicitly, it still will be called in the map.Refresh method to redraw the map. So, we need to open the projection before it. Try to below codes should be avoid the exception: 
  
  
var featureLayers = map.GetFeatureLayers();
var proj4Projection = new ManagedProj4Projection();
proj4Projection.InternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326);
proj4Projection.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();
proj4Projection.Open();
foreach (var featureLayer in featureLayers)
{
    featureLayer.FeatureSource.Projection = proj4Projection;
}
map.SafelyRefresh();
 
 if the issue persists, please let us know. 
 Thanks, 
 Johnny

Johnny, that was a relatively easy fix, thank you.

Hi Klaus, 
  
 You are welcome. 
 Good to hear it works. 
  
 Johnny