ThinkGeo.com    |     Documentation    |     Premium Support

IsDefaultJavascriptLibraryDisabled=true breaks map

I’m trying to compress the thinkgeo .axd files, and i’m using the suggestion i found here:

thinkgeo.com/forums/MapSuite/tabid/143/aft/10866/Default.aspx

ok, that’s easy, i add the line

Map1.IsDefaultJavascriptLibraryDisabled = true; 

in my code, and my map page won’t load at all with that change.  In my chrome console, i’m getting the following error:

mapParser is not defined

in this long script of yours:



var rootPath = ‘…/…/…/’;var jsoncMap1={“resolutions”:[156542.64237009812,78271.321198278223,39135.660585909951,19567.830298246638,9783.9151491233188,4891.9575732387439,2445.9787871485382,1222.9893937065608,611.4946968532804,305.74734829434857,152.87367420009093,76.436837113274635,38.218418556637317,19.109209275672825,9.5546046365134956,4.7773023182567478,2.3886511593929574,1.1943255795641869,0.59716278978209347,0.29858139489104674],“maxExtent”:{“left”:-1000000000,“bottom”:-1000000000,“right”:1003745822.33726,“top”:1003745822.33726},“currentExtent”:{“left”:-13632444.9961943,“bottom”:3383583.04260912,“right”:-9870442.48466808,“top”:5464044.04143854},“cursor”:“default”,“units”:“Meter”,“baselayerid”:“GoogleMap”,“markerOverlay”:{“gridSize”:0,“isBaseLayer”:false,“otype”:“MARKERS”,“isDefault”:false,“visibility”:true,“name”:“DefaultMarkerOverlay”,“opacity”:1,“displayInLayerSwitcher”:false,“Id”:“DefaultMarkerOverlay”,“AutoRefreshMilliseconds”:0},“layers”:[{“traf”:false,“centerOnStreetView”:false,“type”:"(typeof G_HYBRID_MAP!==‘undefined’)?G_HYBRID_MAP:google.maps.MapTypeId.HYBRID",“otype”:“Google”,“tick”:"",“visibility”:true,“name”:“Google Map”,“opacity”:1,“displayInLayerSwitcher”:true,“isBaseLayer”:true,“Id”:“GoogleMap”,“AutoRefreshMilliseconds”:0},{“parameters”:{“LAYERS”:“GoogleLayer”,“STYLES”:“WorldMapKitDefaultStyle”,“CLIENTMODE”:“Web”,“SRS”:“EPSG:900913”},“transitionEffect”:“resize”,“singleTile”:“0”,“w”:256,“h”:256,“format”:“image/jpeg”,“otype”:“WMK”,“uris”:["<a href=“worldmapkit1.thinkgeo.com/CachedWmsServer/WmsServer.axd">worldmapkit1.thinkgeo.com/Ca...Server.axd</a>",”<a href=“worldmapkit2.thinkgeo.com/CachedWmsServer/WmsServer.axd">worldmapkit2.thinkgeo.com/Ca...Server.axd</a>",”<a href=“worldmapkit3.thinkgeo.com/CachedWmsServer/WmsServer.axd">worldmapkit3.thinkgeo.com/Ca...Server.axd</a>",”<a href=“worldmapkit4.thinkgeo.com/CachedWmsServer/WmsServer.axd">worldmapkit4.thinkgeo.com/Ca...Server.axd</a>"],“wrapDateLine”:“0”,“tick”:”",“visibility”:true,“name”:“WorldMapKit”,“opacity”:1,“displayInLayerSwitcher”:true,“isBaseLayer”:true,“Id”:“WorldMapKit”,“AutoRefreshMilliseconds”:0},{“w”:256,“h”:256,“transitionEffect”:“resize”,“singleTile”:“1”,“buffer”:0,“clientCache”:{“cacheId”:""},“imageFormat”:“image/png”,“jpegQuality”:100,“singleThread”:false,“visibility”:true,“otype”:“LAYER”,“extra”:“28093503353”,“projection”:“EPSG:4326”,“wrapDateLine”:“0”,“name”:“IncidentOverlay”,“opacity”:1,“displayInLayerSwitcher”:true,“isBaseLayer”:false,“Id”:“IncidentOverlay”,“AutoRefreshMilliseconds”:0}],“rootPath”:"…/…/…/",“editOverlay”:
{
“mode”:“None”,“editSettings”:{“drag”:true,“reshape”:true,“resize”:false,“rotate”:true},“features”:[],“style”:{“fillColor”:"#0033FF",“fillOpacity”:0.31372549019607843,“strokeColor”:"#0033FF",“strokeOpacity”:0.62745098039215685,“strokeWidth”:1},“otype”:“VECTOR”,“visibility”:true,“name”:“EditOverlay”,“opacity”:1,“displayInLayerSwitcher”:false,“isBaseLayer”:false,“Id”:“EditOverlay”,“AutoRefreshMilliseconds”:0},“highlightOverlay”:{“highlightStyle”:{“fillColor”:"#FF3300",“fillOpacity”:0.31372549019607843,“strokeColor”:"#FF3300",“strokeOpacity”:0.62745098039215685,“strokeWidth”:1},“features”:[],“style”:{“fillColor”:"#0033FF",“fillOpacity”:0.31372549019607843,“strokeColor”:"#0033FF",“strokeOpacity”:0.62745098039215685,“strokeWidth”:1},“otype”:“VECTOR”,“visibility”:true,“name”:“HighlightOverlay”,“opacity”:1,“displayInLayerSwitcher”:false,“isBaseLayer”:false,“Id”:“HighlightOverlay”,“AutoRefreshMilliseconds”:0},“controls”:{“Measure”:{“measureType”:“PathMeasure”,“displaySystem”:“metric”,“geodesic”:false,“enabled”:false},“TouchNavigation”:{“enabled”:true},“AnimationPan”:{“delay”:300,“onClientClick”:"",“enabled”:false},“LayerSwitcher”:{“onLayerChanged”:"",“roundedCornerColor”:"#DDDDDD",“activeColor”:"#DDDDDD",“baseTitle”:"",“switchTitle”:"",“enabled”:false},“Navigation”:{“wheelDisabled”:false,“zoomBoxKeyMask”:“1”,“enabled”:true},“MousePosition”:{“showType”:“latlon”,“enabled”:true},“OverviewMap”:{“maxRatio”:24,“minRatio”:8,“enabled”:false},“PanZoom”:{“zoomWorldIcon”:true,“enabled”:false},“PanZoomBar”:{“zoomWorldIcon”:true,“enabled”:true},“ScaleLine”:{“enabled”:true},“Logo”:{“enabled”:false},“KeyboardDefaults”:{“slideFactor”:75,“enabled”:false},“LoadingImage”:{“w”:0,“h”:0,“enabled”:false}},“onClientClick”:“mapClick”,“trackShapeEnd”:“trackShapeFinished”,“popups”:[{“html”:"",“popupType”:“CloudPopup”,“id”:“IncidentInfo”,“lonlat”:{“x”:0,“y”:0},“w”:450,“h”:300,“visibility”:false,“opacity”:1,“autosize”:false,“autopan”:false,“closable”:true,“ox”:0,“oy”:0}],“pageName”:“PouaTxafm0iEmMzmzRTHyA_cMap1”,“centerX”:-11751443.7404312,“centerY”:4423813.54202383,“zoom”:-1,“cid”:“cMap1”,“uid”:“Map1”};parsercMap1=new mapParser(jsoncMap1);Map1=parsercMap1.map;CreateAllMaps();keepsession(rootPath);var tg=new ThinkGeo(‘cMap1’);Class.Extent(Map1,tg);initMapSize(parsercMap1.map,rootPath,‘PouaTxafm0iEmMzmzRTHyA_cMap1’);//]]>


if i leave the IsDefaultJavascriptLibraryDisabled line in the C# code and set it to false, it works fine again.  Is this functionality no longer supported?  Or is there another setting i need to be messing with 

to get it to work right?  I am using MVCEdition.dll version 8.0.0.106

Hi Thomas, 
  
 If you set Map1.IsDefaultJavascriptLibraryDisabled = true, all of us default scripts won’t be loaded, so the map won’t works well.  
  
 After you set this property, you should want to choose some scripts to manually load them. 
  
 As below is a simple sample for it, wish that’s helpful. 
  
  
 public class MyMap : Map
    {
        public MyMap(string name, System.Web.UI.WebControls.Unit width, System.Web.UI.WebControls.Unit height)
            : base(name, width, height)
        {
            IsDefaultJavascriptLibraryDisabled = true;
        }

        protected override void PreRender()
        {
            base.PreRender();

            ClientScriptManager.RegisterClientScriptInclude(“opl”, “…/…/opl_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“extension”, “…/…/extension_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“helper”, “…/…/helper_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“parser”, “…/…/parser_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“func”, “…/…/func_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“cm”, “…/…/cm_GeoResource.axd”);
            ClientScriptManager.RegisterClientScriptInclude(“msajax”, “…/…/msajax_GeoResource.axd”);
        }
    }
 
  
 Regards, 
  
 Don

sure, that helps, but in the end my question isn’t ‘how do i get IsDefaultJavascriptlibrary = true to work’, but ‘how do i compress those .axd files’, like in the original question i link to, thinkgeo.com/forums/MapSuite/tabid/143/aft/10866/Default.aspx .  Using your clientscriptmanager method above does not compress those files, and puts me back where i started.  Is there any documentation anywhere that has samples on the best way to optimize/compress your .axd files?

Hi Thomas, 
  
 The code above just shows how to manually load the script files. 
  
 In fact not all axd files in our map are script files, so we haven’t provide API for optimize/compress them. 
  
 I think you can get the axd file in PreRender function, then write code to optimize/compress them (or find any 3rd part library for it), then register the modified script to page. 
  
 Do you think that will works for your scenario? 
  
 Regards, 
  
 Don

i honestly have no idea if it will work for my scenario.  I just assumed that you would already have steps layed out on how to compress your files.  I’m not familiar with compressing .axd files myself and will need to investigate on how to do that.  I figured i would just ask you first.

Hi Thomas,



I think there is a common way to compress and referring thinkgeo js locally, please try the below way: We can save those axd files as js files, then compress those js files and referring them in view side rather than registering those js files in server side:


@using ThinkGeo.MapSuite.MvcEdition
@using ThinkGeo.MapSuite.Core
@model ThinkGeo.MapSuite.MvcEdition.Map  
 
<script src="…/…/Scripts/opl_GeoResource.js"></script>
<script src="…/…/Scripts/extension_GeoResource.js"></script>
<script src="…/…/Scripts/helper_GeoResource.js"></script>
<script src="…/…/Scripts/parser_GeoResource.js"></script>
<script src="…/…/Scripts/func_GeoResource.js"></script>
<script src="…/…/Scripts/cm_GeoResource.js"></script>
<script src="…/…/Scripts/MicrosoftAjax.js"></script>
 
<div style="width: 500px; height: 400px;">
    @{Html.ThinkGeo().Map(Model).Render();}
</div>

Please notice the referring order on those js files and set the IsDefaultJavascriptLibraryDisabled as true. Since we have those files locally, we can feel free to compress those files with some tools like Minifer,JSCompress etc.



Hope it helps and any questions, please feel free to let us know.

Thanks,

Troy




Ok, thank you.  I understand where you’re going with this now.  I’ve downloaded the axd files like you mentioned and turned them into js files that i can bundle, and that works.  I have 1 more issue though: 
 we use google as one of our layer options on the map.  Could you point me to the correct axd/js file that thinkgeo uses to support google?  With the references above i’m getting a ‘google is not defined’ error. 


Hi Thomas, 
  
 For the google not defined issue, the below codes show how to add a google js referring on the client, please try it: 
  
 map.ClientScriptFileNames.Add("Google", ((GoogleOverlay)overlay).JavaScriptLibraryUri.AbsoluteUri); 
  
 If the issue persists, please feel free to let us know. 
 Thanks, 
 Troy

Thanks very much!

very welcome! 
  
 Any other questions, please feel free to let us know. 
 Thanks, 
 Troy