ArcGIS Runtime je rodina nativních SDK pro vývoj geoaplikací pro všechny populární mobilní a desktopové platformy. Se všemi ArcGIS Runtime SDK lze vytvářet aplikace, které i při omezeném nebo žádném připojení k síti umožňují přístup k mapám a datům a jejich další využití. Navíc lze vektorová data stáhnout do zařízení, upravovat je offline a později bez problémů synchronizovat s databází, jakmile je k dispozici internetové připojení.
Pro offline zpřístupnění různých typů dat existuje několik možností a pracovních postupů, které lze v ArcGIS Runtime snadno kombinovat. Je třeba vzít v úvahu, že SDK pro desktopy (.NET/WPF, Java, Qt) mohou díky Local Server technologii pracovat s některými daty, která nejsou možná v ostatních SDK.
Obecně lze rozlišit tři možnosti:
- Zpracování dat v ArcGIS Desktop ve formě ArcGIS Runtime Content nebo různých druhů balíčků (Packages) a následné zpřístupnění pomocí side-loadingu nebo stahování souborů.
- Zahrnutí „originálních dat“ tak, jak jsou, např. GeoTiffy, KML, Shapy atd.
- Export dat ze služeb přímo pomocí ArcGIS Runtime za běhu aplikace, například v Collector for ArcGIS (postaveném na ArcGIS Runtime technologii).
Samozřejmě mohou vývojáři klientsky skládat mapy vrstvu po vrstvě. To znamená určitou dodatečnou práci. Aby bylo možné skutečně kompletně offline použít celou mapu se všemi daty najednou, existovaly do verze 100.0 ArcGIS Runtime pouze dvě možnosti – jako předzpracovaný Mobile Map Package (.mmpk) a jako Map Package (.mpk) v kombinaci s Local Serverem. Oba patří k možnosti 1 uvedené výše. S ArcGIS Runtime verze 100.1 je nyní díky novému OfflineMapTask možné exportovat kompletní mapu přímo v aplikaci za běhu (možnost 3).
Nový OfflineMapTask v ArcGIS Runtime v100.1
Předpokladem pro OfflineMapTask je WebMap, která byla nakonfigurována pro offline použití. WebMap je popis mapy v textovém formátu (JSON) s informacemi o zdrojích dat, symbolice a věcech jako počáteční rozsah zobrazení, design pop-up oken apod. Všechny ArcGIS aplikace a vývojářské nástroje umí WebMaps číst a podle nich mapu sestavit. Jsou tedy celým tajemstvím toho, proč mapy vypadají stejně bez ohledu na to, jaké ArcGIS klienty používáte. WebMaps jsou uloženy jako položky portálu v ArcGIS Online nebo ArcGIS Enterprise a mají ID. Právě toto ID je potřeba pro OfflineMapTask, aby bylo možné mapu v ArcGIS Runtime offline použít.

Krok za krokem implementace OfflineMapTask je popsána v příslušné dokumentaci různých ArcGIS Runtime SDK, zde například pro .NET. Navíc jsou k dispozici ukázky na GitHubu k vyzkoušení, například také pro .NET. Proto není nutné tento postup zde znovu rozebírat.
Zajímavý je formát, ve kterém mapa vzniklá pomocí OfflineMapTask na zařízení uložená je:
Dle dokumentace jsou data uložena lokálně jako Mobile Map Package. Mobile Map Package, jak ho známe dosud, je jediný zabalený soubor s příponou .mmpk. To jsem vlastně očekával i po prvním testu.
Ale vytváří se složka s označením .mmpk (Mobile Map Package), viz obrázek. Její struktura velmi připomíná strukturu rozbaleného MMPK (všechny balíčky jsou zipované). V této složce se nachází popis/nastavení mapy (mobile_map.mmap), SQLite databáze (.geodatabase) s vektorovými daty a také Tile Packages (.tpk) podkladových map. Připomínám, že ve stávajícím zabaleném MMPK formátu nejsou Tile Packages povoleny.
Kromě toho vzniklá složka Mobile Map Package může být použita pouze v ArcGIS Runtime (pomocí třídy MobileMapPackage) a nikoli jako zipované MMPK i v ArcGIS Desktop.
Sám předpokládám, že se jedná o další vývojovou fázi zmíněnou na Developer Summitu v Palm Springs v několika roadmapách: Mobile Map Packages by měly být nakonec spravovány lokálně v ArcGIS Runtime, obsahovat veškerý obsah z ArcGIS Runtime Contents, umožnit editaci vektorových dat uvnitř balíčku a sloužit jako formát pro výměnu mezi ArcGIS Runtime a ArcGIS Desktop. To považuji za správný směr.