ThinkGeo.com    |     Documentation    |     Premium Support

Setting current extent to a map not working properly



Dear Support Team,



In normal MapSuite web application, my map opens and zooms to the visible extent by setting current extent of a map to a given bounding box.

But when the same map and same code is moved to MVC, the resulting map is so tiny that you can hardly see it untill it is zoomed to near maximum extent. Can you please give me a sample code showing how to set a current extent to a map in MVC and have it working like it is on normal mapsuite web application? Below is part of the MVC code I am running in my application



Map creation


@Html.ThinkGeo().Map(“Map1”, 400,510).MapBackground(new BackgroundLayer(new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"))))  
            .MapBackground(new BackgroundLayer(new GeoSolidBrush(GeoColor.FromHtml("#ffffff"))))
            .MapUnit(GeographyUnit.Feet)
            .OnClientClick(“TakeCordinate”)
            .MapTools(tools =>
             {
                 tools.MouseCoordinateMapTool().Enabled(true); 
                 tools.OverlaySwitcherMapTool().Enabled(true); 
                 
             })
             
             .MapTools(mapTools =>  
              {  
                mapTools.LoadingImageMapTool().Enabled(true).Width(64).Height(64).ImageUri(new Uri(new Uri(Request.Url.AbsoluteUri), “Content/images/loading.gif”));  
              })
             .CustomOverlays(overlay =>
             {
                overlay.LayerOverlay(“Image”).IsVisible(true).Name(“Image”).IsBaseOverlay(false);
                overlay.LayerOverlay(“Boundary”).IsVisible(true).Name(“Boundary”).IsBaseOverlay(false);
                
                 
                  
              })
           .Render();

Map Loading




function LoadMap( {
    alert(Map1);
    GetMapHeight()
    Map1.ajaxCallAction(“Custumers”,“LoadMap”, {“height”: GetMapHeight()}, function (result) {
        Progress();
        var value = result.get_responseData();
        //alert(result);
        if (value == ‘’) {
            alert(“No place is found!”);
            //return;
        } else {
            alert(value);
            var bounds = OpenLayers.Bounds.fromString(value, false);
            alert(bounds);
            Map1.zoomToExtent(bounds, false);
            alert(222)
        }
        //Map1.GetOpenLayersMap().updateSize();
        FinishRequest();
    })
 
 
    redrawMap(“Boundary”);
    redrawMap(“Image”);
     
    //Map1.zoomToMaxExtent(true);
    //WamisMap.numZoomLevels(200);
 
 
 
   // Map1.printMap();
 
 
}

Server side code for loading map




public RectangleShape LoadMap(Map map, GeoCollection<object> args) {
 
            Open(map);
 
            map.Height = System.Web.UI.WebControls.Unit.Pixel(int.Parse(args[“height”].ToString()));
            Web.Layers.Region mwanza = new Web.Layers.Region(GetProperty(“root”) + “App_Data/Map/Mwanza/ShapeFiles/CAPRIPORTt.shp”, this);
            LayerOverlay region = map.CustomOverlays[“Boundary”] as LayerOverlay;
            RectangleShape extent = mwanza.GetBoundingBox();
            SetImage();
            //catersion = new ISystem.Web.Map.Catersian(extent);
           // GetPanel().StaticOverlay.Layers.Add(mwanza);
            mwanza.Close();
            region.Layers.Add(mwanza);
            //map.MapTools.LoadingImage.
            ////overlay.Layer(mwanza);
            //map.StaticOverlay.ServerCache = new ServerCache(GetProperty(“root”) + “Resources/Map/Image/Cache”);
            Web.Models.Custumers custumers = new Models.Custumers(this);
            RectangleShape custumers_extent = custumers.Load();
            if (custumers_extent != null) {
                return custumers_extent;
            }
            return extent;
             
            
        }





Best Regards,

Vincent

Hi Vincent,



Please try attached sample for the solution.



Thanks,

Johnny

MvcApplication4.zip (530 KB)

Hi Johnny,



Thank you for the reply. I have tried to implement the code you have provided in the sample project, but still the resulting map does not zoom to the expected extent. I have sent the shape file I am using, to support@thinkgeo.com through an email titled "MVC Shape File". Can you please try load the shapefile from your codes and see if the current extent is set approprietly?



Best Regards,

Vincent




Hi Vincent,



Please see attached sample and its corresponding videos screencast.com/t/uQvyZzumQ.



Thanks,

Johnny

001_MvcApplication4.zip (534 KB)

Hello Johnny, 
  
 I brought up your 001_MvcApplication4.zip and I tried to access the setDrawMode() method on the Map1 object in JavaScript.  It appears to be giving me a reference to and object, but I get the error that says object does not support that method.  In the API documentation, I see it spelled with a capital ‘S’ and a small ‘s’ (as in SetDrawMode() and setDrawMode()) neither one seems to work.  Is there something special I need to do to get this method to work in Javascript with ThinkGeo 8 MVC edition running in a Razor view using C# for my code language? 
 I’m probably missing something simple. 
 Thanks, 
 Brian

Hi Brian, 
  
 Please view our sample: "Track Shape Finished Event" in HowDoISamples project, this sample shows how to use this API. 
  
 Regards, 
  
 Don