Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

My customer requirement is to support a MrSID image directly in ArcGIS Mobile. The details are sketchy but I think the intent is that they want a local background raster Map while the ESRI.ArcGIS.Mobile.Map gets used to handle other tasks (?vector display, updating GDB?).

The Map control seems designed to consume Map Services via the MapCache object. Is there any way to get the MrSID image to render, pan and zoom in ArcGIS Mobile?

A "How to" reference is perhaps too much to hope for. But I'll appreciate any related suggestions. For example, how might we use a local TIFF or JPEG image as the background map?

share|improve this question

2 Answers 2

As far as I can recall the only way would be to create a cached base map that is distributed to the device when the application is installed. So I would suggest looking at how to convert the data to a MapCache that you can distribute on to the device.

share|improve this answer
    
Thanks very much for this response, Mathias. Converting the MrSID image to lots of small raster tiles seems to be the preferred solution (preferred at least by ESRI ... the customer has a different perspective) That said, I did get some help from Redlands which I'll relay as a separate Answer in the hopes that it helps someone else. –  Michael Rosen Oct 25 '10 at 18:19
    
@Michael-Rosen, We looked at it when we started looking for a MapObjects Java replacement, but it felt like it would never grow enough to solve all our client requirements. We ended up with ArcGIS Engine. –  MathiasWestin Oct 25 '10 at 20:00

The control that renders for us in ArcGIS Mobile is ESRI.ArcGIS.Mobile.Map. This control exposes a “Layers” property which is a collection of MapLayers. If we make a custom MapLayer that knows how to decode a MrSID file, it can read a local file, decode it and blit the pixels to the screen via it's overriden Draw() method.

The difficulty, of course, is that there is currently no Native ARM or pure Managed SDK that will do this. But if we work through that, then we could solve the integration problem. The 9.3.1 Mobile SDK includes a sample called LiveTraffic that illustrates the technique: derive a custom MapLayer and override the Draw() method().

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.