ThinkGeo.com    |     Documentation    |     Premium Support

StaticOverlay MapUnit Change Problem

I am using  MVC Edition   

     to add  StaticOverlay  

   


        
  1.  @{Html.ThinkGeo().Map(“Map1”, new System.Web.UI.WebControls.Unit(100, System.Web.UI.WebControls.UnitType.Percentage), 500)  

  2.     
  3.           .MapBackground(new BackgroundLayer(new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"))))

  4.     
  5.           .MapUnit(GeographyUnit.Meter)

                  .CurrentExtent(6643042.96358, 4644924.705353, 8355232.396930, 3421932.252960)

  6.     
  7.           .StaticOverlay(overlay =>  

  8.     
  9.           {  

  10.     
  11.                                GdiPlusRasterLayer gdiPlusRasterLayer  = new GdiPlusRasterLayer(Server.MapPath(@"~\App_Data\World.tif"));

                                       gdiPlusRasterLayer.UpperThreshold = double.MaxValue;

                                       gdiPlusRasterLayer.LowerThreshold = 0;

                                       overlay.Layer(gdiPlusRasterLayer  ); 

  12.     
  13.            }  

  14.     
  15.     ).Render();} 


When i change     .MapUnit(GeographyUnit.Meter)    I cant’s see the image for World.tif  Can you please help me where i got wrong 





Hi Pankit,



Welcome to map suite forums!



I think this is a projection issue, since you are switch the map unit from decimal degree to meter, we should do a projection converter on each layers which is under the decimal degree projection before. As for the world.tif, it is based on decimal degree by default, we can get it by the world file “World.tfw”. So, it needs to do a projection.



Please try the below codes to finish the projection:


GdiPlusRasterLayer gdiPlusRasterLayer = new GdiPlusRasterLayer(Server.MapPath(@"~\App_Data\World.tif"));
gdiPlusRasterLayer.UpperThreshold = double.MaxValue;
gdiPlusRasterLayer.LowerThreshold = 0;
overlay.Layers.Add(gdiPlusRasterLayer);
 
Proj4Projection prj4 = new Proj4Projection();
prj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString();
prj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
prj4.Open();
if (map.MapUnit == GeographyUnit.Meter)
{
    gdiPlusRasterLayer.ImageSource.Projection = prj4;
}

More details about the projection on Gis, please refer to en.wikipedia.org/wiki/Map_projection



Hope it helps and have a good journey on map suite.

Thanks,

Troy

Thank you So much it’s work For Me

Hi Troy 



This code is working fine in localHost but after publishing to server it give problem . i am working with trial version of mvc





Hi Pankit,



Form the error message, I noticed there are some messages shows "xxx not exist", are there any data missing in your server?



If not, then i guess this is a deployment issue, here are some steps which need your assist.


        
  • comment out some layers to narrow down the issue or make your project minimize.

        

  •     
  • deploy our HowDoI sample to see if they work fine.

  •     
  • If possible, take a video or send us a contain-self sample and your server environment information.


Thanks,

Troy