ThinkGeo.com    |     Documentation    |     Premium Support

7.0.288.0 - new bug!

Hi,



I have updated some of my applications with the version 7.0.288.0 and I am finding an issue within  “opl_GeoResource.axd”.



log attached to the post.



jm



****** Get new extents: 0 global.ts:457
Object {extent: “-1181.25,0,1181.25,0”, scale: 442943842.5} global.ts:462
POLYGON((-1181.25 0,1181.25 0,1181.25 0,-1181.25 0)) global.ts:463
****** Get new extents: 0 global.ts:457
Object {extent: “-1181.25,-625.078125,1181.25,625.078125”, scale: 442943842.5} global.ts:462
POLYGON((-1181.25 -625.078125,1181.25 -625.078125,1181.25 625.078125,-1181.25 625.078125,-1181.25 -625.078125)) global.ts:463
XHR finished loading: “localhost:63071/markers_GeoResource.axd?overlayIds=DefaultMarkerOver…cMap1&clientId=cMap1&scale=442943842.5&gridSize=0&extra=0.8606447894126177”. opl_GeoResource.axd:586
XHR finished loading: “localhost:63071/markers_GeoResource.axd?overlayIds=DefaultMarkerOver…cMap1&clientId=cMap1&scale=442943842.5&gridSize=0&extra=0.5810449917335063”. opl_GeoResource.axd:586
XHR finished loading: “localhost:63071/session_GeoResource.axd?w=1680&h=0&pn=EM35hiVdMUGzYoN9uQN4w_cMap1”. opl_GeoResource.axd:586
Object {toastId: 1, state: “visible”, startTime: Thu Mar 27 2014 09:44:35 GMT-0500 (Central Daylight Time), options: Object, map: Object}
 toastr.js:231
Object {toastId: 2, state: “visible”, startTime: Thu Mar 27 2014 09:44:35 GMT-0500 (Central Daylight Time), options: Object, map: Object}
 toastr.js:231
Uncaught TypeError: Cannot read property ‘maxExtent’ of null opl_GeoResource.axd:515
OpenLayers.Tile.OpenLayers.Class.shouldDraw opl_GeoResource.axd:515
OpenLayers.Tile.OpenLayers.Class.draw opl_GeoResource.axd:515
OpenLayers.Tile.Image.OpenLayers.Class.draw opl_GeoResource.axd:518
OpenLayers.TileManager.OpenLayers.Class.drawTilesFromQueue opl_GeoResource.axd:1264
(anonymous function) opl_GeoResource.axd:1262
(anonymous function) opl_GeoResource.axd:41
event.returnValue is deprecated. Please use the standard event.preventDefault() instead. browserLink:37
XHR finished loading: “localhost:63071/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22geodatahub%22%7D%5D&clientProtocol=1.3&_=1395931475091”. 


 


Hi JM, 
  
 Thanks for your post, we tried to recreate your problem on our end, but it didn’t show up, would you please tell me more info about your senario, or if possible, a small self-contained sample will be highly appreciated. 
  
 Waiting for your further information. 
  
 Best Regards 
  
 Summer

Hi Summer, 
  
 My application work without any issue when using the DLLs version 7.0.278.0. The bug is found with both version 7.0.287.0 and 7.0.288.0. of the daily build. 
  
 thanks. 
  
 jm.   
  
  


Hi Jean-marie, 
  
 Web edition team just introduced updated OpenLayers version to developmenet version these days, but we haven’t found exception just like your’s in our samples. I think that should cause your problem. 
  
 We need more information about how to reproduce this problem, could you please paste some client side code snippet for help? 
  
 Regards, 
  
 Don

Hi, 
  
 I tried again this morning with the most recent version of the daily build and I still have the same issue.  I tried to debug the problem but it does appear to be deep inside at the intersection of your javascript and openlayers javascript library.  Potentially when the openlayers start to populate the map with the tiles coming from the WMS… 
  
 What should we do now?  My application is quite large and require many databases.   
  
 Please advice on what to do next. 
  
 Thanks in advance. 
  
 Jm.

Hi JM, 
  
 We did do some enhancements to MaxExtent of map after 7.0 release, but it should be before 7.0.288.0, before it’s hard-codes, now it’s calculated based on the TileMatrix. maybe there is a problem there, but I was unable to reproduce it. I guess a good solution for you is that you can try setting the client map’s maxExtent using Javascript  in onMapCreating event. Please have a try and let me know how you get. 
  
 Thanks, 
 Johnny

Hi Johnny, 
  
 I was able to pinpoint a bit better where the bug seems to be… in fact it is not linked with the MAP object extent but with a "LayerOverlay" with more than one "InMemoryFeatureLayer" loaded…  when I do disable the "Map.CustomOverlays.Add(xxx)" then the application work but I soon as I enable the "Map.CustomOverlays.Add(xxx)" then bug…  This is occurring since you did move to the new I think openlayer and the bug seems to be when the statement "this.layer.maxExtent()" is executed inside the openlayer framework… 
  
 please try to fix it because I have a large number of functions where I have a layerOverlay and more than one inMemoryFeatureLayer loaded inside! and of course all are now failing…  
  
 thanks. 
  
 jm.

Hi Jm, 



From your exception stack, we can see it is from tileManager which is a new feature in the newer OL and have been applied in our MvcEdition. I have debugged into the exception but the feature always works fine in my all kind of scenarios. I am not sure if this is a potential issue on this feature based on your case, but I think there is an option to disable the tileManager: 


<script type=<code style="color: blue;">"text/javascript"<code style="color: #000000;">>
    OnMapCreating = function (map) {
        map.tileManager.destroy();
    }

Hope it helps.

Regards,

Troy

Hi Troy, 
  
 Your fix did work but this does not explain what or why the tile manager is having an issue.  Moreover, I think that the performance seems to be not has good when the tile manager is not used.  I can tell because I have function in my application not using / loading an overlay with multiple layers. 
  
 jm

Hi Jm,



I know disabling the tilemanager is not the best solution for this issue, but I have tried and tested differences cases in mvc edition to add overlays. But everytime, the maxExtent works fine after go through the exception stack and didn’t encounter the null exception like yours. 



We really want to figure out the root of the reason, but that would be very hard to find out it without a sample. we would appreciate  you can send us a mock of your project if possible, or we will wait till another same question happens.



Regards,

Troy


Hi Troy, 
  
 I was able to pinpoint the issue!!!   "TileType.SingleTile" is the issue…  "TileType.MultipleTile" does work well!!! 
  
 jm. 
  
  
  


I think that you have the issue with the “HeatLayer” as well…  I can see the "Uncaught TypeError: Cannot read property ‘maxExtent’ of null " when loading the heat map. 
  
 jm

Hi Jm, 
  
 Good to hear we have narrow down this issue, but unfortunately, I still can’t recreate it in our HowDoI sample=>LayersFeatureSources=>LoadAHeatLayer/ under single tile mode. 
  
 Hope you have more details for us to recreate it. 
 Thanks, 
 Troy

Hi, 
  
 I can recreate the issue that is linked to an overlay that is  loaded with more than one feature layer and using a single tile.  I do not know why you are unable to generate the issue on your side but for me it is clear the tile manager has an issue when using a single tile and not a multiple tiles schema.  I do not have the time to create a sample but I think that you should look carefully on your side because as I said if I do use multiple tiles the everything work fine but when single tile then I get the error and what is really weird is that when I do use a heat map layer then I get the message but the application seems to work fine… 
  
 Jm

Hi,



Since I switched from single tile to multiple tiles in order to avoid the issue linked with null maxExtent, I have now another issue the layer do not redraw entirely and I get truncation. please look at the attached screen copy.



thanks

Hi Jm,



Thanks for the screenshot, but it is hard to identify the truncation issue. Would you please attach it again? But I think the best thing is you can let us know more details about how your scenarios is to make it can recreate in our end.



Here is a video to show my test. screencast.com/t/IbnL0llT



Also, I think a video is also better to show the both two issues if possible. Here is a small tool which might be useful: techsmith.com/jing.html



Thanks,

Troy

Hi, 
  
 I have created two videos,  the first one is using yesterday daily build and the second one is using the 7.0.268.0 daily build in fact that is the last ‘good build’ for my application.  I have setup the application to use : ‘TileType.MultipleTile’ in the first video and you should see both truncation and or tile rendering issues as well the issue linked with the heat map.  First video link : "screencast.com/t/TPsqEoClN’ 
  
 For the second video the application has been setup to use only : ‘TileType.SingleTile’ and the daily build version 7.0.268.0 you should see that the application does not have any issue when using this build as well ‘TileType.SingleTile’. video link : ‘screencast.com/t/sEo6CTGUh49o’ 
  
 If I setup the application to use : ‘TileType.MultipleTile’ then I get the rendering and or truncation issues even with the version 7.0.268.0. 
  
 thanks. 
  
 jm

Jm, 
  
 We really thank your videos, they show the issues clear. But unfortunately, I still can’t recreate the issue but I will keep working on this. Once there are any updates, I’ll update here immediately. 
  
 During this, if you have any further information, that would be great for us all the time. 
 Sorry for any inconvenience. 
 Regards, 
 Troy

Hi Jm,



Thanks for your waiting, I have recreated the maxExtent issue when using single tile and it seems a bug from OpenLayer. Currently, we have fixed this issue in the latest MvcEdition development version, but since we have stopped build daily packages for MapSuite 8.0 release, please using the below workaround to instead before the map suite 8.0 release.


var OnMapCreating = function (map) {
    OpenLayers.Tile.prototype.destroy = function () {
        if (this.layer.map.tileManager != null) {
            OpenLayers.Util.removeItem(this.layer.map.tileManager.tileQueue[this.layer.map.id], this);
        }
 
        this.layer = null;
        this.bounds = null;
        this.size = null;
        this.position = null;
 
        if (this.eventListeners) {
            this.events.un(this.eventListeners);
        }
        this.events.destroy();
        this.eventListeners = null;
        this.events = null;
    };

As for the second issue in multi-tile, I still can’t recreate it. Once we encountered the same issue, I will update here.

Thanks,

Troy