ThinkGeo.com    |     Documentation    |     Premium Support

Web solution doesn't work on iPad

Hi,


I've developed a number of web solutions with Map Suite (still using 5.5.111).


They all seem to work as expected on all major browser - IE, FF, Chrome, Safari - but apperently not on an iPad (and some Android tablets as well)


Or rather, some of the solutions do, some of them don't.


All solution utilize the same version of Map Suite Web Edition, as mentioned above, so what triggers the difference ?


The error is manifested by a defunctional OpenLayers map client interface without the zoom/scale bar. This leads me to suspect a JavaScript error ( JS is indeed a rotten egg :-( ), but where and how and why ?


I make no specific handling of different user agents (i.e. browser progs) in my server code, so it must be the JavaScript sent by Map Suite that somehow triggers the error.


One thing that sets this solution apart from other solutions (that _do_ work on the iPad) is the use of an InMemoryMarkerOverlay. This I know triggers a generation of a load of JavaScript code, and I know of some limitations when using this feature. But is this where the error occurs ?


Have anyone got any insights on how to debug a web solution with Map Suite wrt. iPad ?


Has anyone encountered similar problems with Map Suite web solutions run off an iPad ?


I can simulate running the solutions on an iPad with the Saferi browser on my pc, and this do err when running the solution in question. But I can't seem to find out why.


The solution is public at this address (use login: demo/1234): hvmgo01.hvenegaard.dk/SkulpturDB/


Cheers.


 



I should add, that apparently the rest of the solution seems to be running as expected. Just the map interface errs on the iPad.


I tried to add a detection of the iPad using the user agent string, and omit adding the InMemoryMarkerOverlay if an iPad is detected. However, this didn't remove the problem, unfortunately.


 Actually it seems like the JavaScript error occurs even before any overlays are added to the map (the solution first displays a dropdown of "projects", then adds the overlay belonging to the selected project). The zoom/scale bar is missing right away (on iPad), but present and visible in pc browsers.


 Maybe I should also add, that I utilize the AjaxControlToolkit for .Net 3.5 in the solution, but I do that in all solutions, not just in the one that errs.


 



I just tried to upgrade the solution to build 5.5.172, but apart from a curious change in the map backdrop (from pure color to a dummy wms service), it didn’t change anything. When run off an iPad, the zoom/scale bar is still missing. 


Well, I finally got an error message from Safari, that sent me on the right track to solving the problem. Or at least showed me a path thru the wilderness :-) 
  
 The solution in hand was originally built with Map Suite 4.5, and later upgraded to 5.5 (by altering the assembly references, and solving the breaking changes). Apparently there’s also been some changes to the theme stylesheet + images related to servicing mobile units between the two versions, which weren’t updated automatically. I updated these manually. 
  
 The solution now works on an iPad, but I’ve disabled the InMemoryMarkerOverlay for tablets, and I’m currently investigating whether this solved the problem or not. 


Hi Lars,  
  
 Thanks for your feedback! To assist others who might encounter this issue could you post the error message you received from Safari?

Hi Ryan,


I did get a snapshot of it, uploaded it, but didn't publish it. But here it is:



It was the reference to the theme folder that got me working. Although the actual image file "zoom-panel.png" is nowhere to be found (which still puzzles me), I did however notice that one image file (mobile_zoombar.gif) was missing, and also that the style sheet (style.css) was different in size, when compared to a solution created with version 5.5..


The solution was to manually copy both the image file and the style sheet from a 5.5 solution.


Cheers.


 



Thanks Lars!