ThinkGeo.com    |     Documentation    |     Premium Support

Problem trying to use GoogleOverlay

Hi I am using the code below to generate my bottom layer map


 



            Map1.CustomOverlays.Clear();

            EyascoWebFramework.BLL.Map.Map map = EyascoWebFramework.BLL.Map.Map.GetMapByID(Convert.ToInt32(ddlMapChooser.SelectedValue));
           
            //Setting up the Map
            Map1.Width = map.MapWidth;
            Map1.Height = map.MapHeight;
            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml(map.MapBackgroundColor));
            Map1.CurrentExtent = new RectangleShape(map.MapMinLong, map.MapMaxLat, map.MapMaxLong, map.MapMinLat);
            
            Map1.MapTools.PanZoomBar.Enabled = map.MapShowDashboard;
            Map1.MapTools.MeasureMapTool.Enabled = true;
            Map1.MapTools.MeasureMapTool.MeasureType = MeasureType.None;
            Map1.MapTools.AnimationPanMapTool.Enabled = true;

            //Creating the Base layer
            WorldMapKitWmsWebOverlay mapoverlay = new WorldMapKitWmsWebOverlay();
            mapoverlay.TransitionEffect = TransitionEffect.Stretching;
            mapoverlay.IsBaseOverlay = false;

    Map1.CustomOverlays.Add(mapoverlay);

And everything works fine.  I modified the code to use a googleLayer instead and I projected my Rectangleshape since it is coming from the database in Degrees



    Map1.CustomOverlays.Clear();

            EyascoWebFramework.BLL.Map.Map map = EyascoWebFramework.BLL.Map.Map.GetMapByID(Convert.ToInt32(ddlMapChooser.SelectedValue));

            Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            

            RectangleShape rec = new RectangleShape(map.MapMinLong, map.MapMaxLat, map.MapMaxLong, map.MapMinLat);
 

            //Setting up the Map
            Map1.Width = map.MapWidth;
            Map1.Height = map.MapHeight;
            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml(map.MapBackgroundColor));
            
            proj4.Open();
            Map1.CurrentExtent = proj4.ConvertToExternalProjection(rec);
            proj4.Close();
            Map1.MapTools.PanZoomBar.Enabled = map.MapShowDashboard;
            Map1.MapTools.MeasureMapTool.Enabled = true;
            Map1.MapTools.MeasureMapTool.MeasureType = MeasureType.None;
            Map1.MapTools.AnimationPanMapTool.Enabled = true;

            GoogleOverlay Googlayer = new GoogleOverlay();
            Googlayer.JavaScriptLibraryUri = new Uri(ConfigurationManager.AppSettings["GoogleUri"]);   
            Googlayer.GoogleMapType = GoogleMapType.Satellite;
            Map1.CustomOverlays.Add(Googlayer);

 However now I am getting the following error message "Microsoft JScript runtime error: 'mapParser' is undefined".  I tried removing the map form the update panel and I just got the latest DLL about a month ago?  Any ideas?.  

thanks Leon



Leon, 
  
 After changing the base overlay to GoogleOverlay, have you changed the MapUnit to Meter?  The “mapParser is undefined” exception comes from the failed registering “JavaScript”, to address the error, can you let us know how you configure the map? I think there is no problem with the code you posted. 
  
 Thanks, 
  
 Johnny 


I set the Map Unit to Meter in the Markup.  I am attaching my Map definition below.


 



<mp1:Map ID="Map1" runat="server" Width="800px" Height="600px" OnClick="Map1_Click"
                            Style="margin-right: 0px" OnExtentChanged="Map1_ExtentChanged" WebConfigRegisterMode="Manual"
                            MapUnit="Meter" BorderStyle="Solid" BackColor="Black" BorderWidth="1px">
                        </mp1:Map>

 



Oh hey I just realized that I had to set  
  
 WebConfigRegisterMode="Manual" 
  
 to get my projec to run in the first place.   
  
 Is there something I need to change in the Web Config?

Ok that was it!  The problem was with my web.config.  Originally I have set WebConfigRegisterMode="Manual" because I had to do that to get my project to run.  The automatic updating of the Web.Config caused my applicaiton to crash… duplicate entries (tags) 
  
 Consequently, when I changed my code, I was missing some references in the web.config.    
  
 I compared my web.config with the one from the sample project and insert the missing references… everything works fine now. 
  
 Problem solved.

Leon, 
  
 Thanks for sharing your experience. Can you let me know how to set the “WebConfigRegisterMode = ‘Manual’ ” in web.config? I’m just curious. Thanks. 
  
 Johnny 


I set the tag on my map object  (I posted my map object defiition from my aspx back above)



WebConfigRegisterMode="Manual" 



And then I added the tag 

<add type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" name="GeoResource" verb="*" path="*_GeoResource.axd" precondition="integratedMode"> 

to the system.webserver / handleers section in the web.config



and then I added 



 <add type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" verb="*" path="*_GeoResource.*">
</add><add type="ThinkGeo.MapSuite.WebEdition.GeoResourceFactory" verb="*" path="*_GeoResource.axd">




To my httphandlers tag in my web.config



Thanks, Leon. I got what you did. Hope everything goes well with you. 
  
 Johnny