I have successfully created an offline MMPK using the methods:
- ArcGISPortal.CreateAsync to create the portal wrapper
- PortalItem.CreateAsync to create the portal item wrapper
- OfflineMapTask.CreateAsync to create the task
- task.GenerateOfflineMap to create the job
- job.GetsResultsAsync to cause it to download
I have successfully opened and connected to the MMPK using:
The question is...is there a way to get the MMPK to update/receive changes made from the portal again? Not even looking for 2 way updates just want to make sure the offline info is up to date. I know you can sync edits like this: Sync offline edits—ArcGIS Runtime SDK for .NET (WPF) | ArcGIS for Developers . But was looking for something that included all the layers including the basemap tiles...
At the moment you have either to use OfflineMapSyncTask Class for Feature layers in bulk or work directly with individual layers with GeodatabaseSyncTask Class or ExportTileCacheTask Class. There is no way to refresh the data that includes all the different layer types since we don't know if there has anything changes in the tile services and there is no support in the platform to report this at the moment. One option is just to re-create the area when you need to refresh the content.
In next release, we are introducing preplanned offline workflow where you can create your offline maps and data on the server and then use that framework to update your offline maps. This is one way that you can update all of you data packages then you would need to pull those offline. This might work well in your use case.
I'm slightly confused as the current Runtime documentation suggests creating map areas (as part of a preplanned workflow) is already implemented, but judging by your comment above it may not be available in the current release.
Looking at this URL: Create an offline map—ArcGIS Runtime SDK for .NET (WPF) | ArcGIS for Developers
I'm puzzled by this part:
'Create a map area
To create a map area, run a python command and provide a geographical extent to define the area of interest. This extent can be provided using one of the web map's Bookmarks or an Envelope.'
There is no mention of the specific command that needs to be run to create the map area, nor can I find a function in the Python API that looks like a function to create a map area (perhaps it's obvious and I'm missing it). Are you able to shed any light on this?
Edit: I've found the REST API call: