What is best possible solution to provide FieldMaps users capability to see basemap+data and collect data in offline mode, if I have,
1)An online 3rd party map service for basemap
2)Sync enabled feature service (data hosted in EGDB) so that some smart forms can be designed.
I could find that
1)FieldMaps doesnt have option of using any polygon FC to generate 'offline areas' and I can draw only 16 areas.
2)WMS not supported for offline (Requirements—ArcGIS Field Maps | Documentation) so I could try MMPK but MMPK cant be used as user cant collect data with MMPK.
3)Cant use tile packages because only maps that contain local data can be cached using the tile package tools in ArcGIS Pro. Online services, such as tiled map services, are not supported. Attempting to package maps that contain online services will result in an error.(Share a tile package—ArcGIS Pro | Documentation)
I am curious to know what sort of answers you get for your questions. I will say that I did not have success in using Field Maps when collecting data offline. I think much of it had to deal with the basemap I was using. It looks like you have done your homework in what is restricted for offline use. Do not use a tiled basemap. You can cache an offline area by downloading the basemap onto your device (especially Esri basemaps). The hard part for me is, it may look like it will work offline but it will not and will not tell you why.
My advice would be to test this pretty well before going into the field. Test it yourself by going someone local and then have someone else test it with a different device on their account going to a different place. This should certainly help tie up any loose ends when it comes to what may be missing in offline data collection. Good luck with it all!
1) Have you tried making a web map in AGOL with your 3rd party basemap and data as a sync enabled hosted feature service and downloading that web map in Field Maps? If that doesn't work to bring down the basemap create a vtpk in Pro.
2) Yes, to collect data offline your data needs to be a sync enabled feature service (no way around this).
1) Using AGOL web maps and manage areas, you can used the Sketch polygon map area button to create offline polygon areas. see take web maps offline
Not sure how the 3rd party basemap was created/configured.
My basemaps are mostly web maps with a published tile packages (hosted tile layer). The overview page shows the "Layers" used. I can click on that and find the Hosted tile layer which has a link to the tile package that it was published from (if hasn't been removed. If so, no way for next steps).
If I download the tile package itself (tpk/tpkx) and sideload on the device, it is available for all my offline maps in Field Maps app.
So, "IF" you have access to the tile package that was used to publish the tiled service, you can take them offline easily.
I am testing this now, this is what i have tried with no success.
Doesn't matter how large of small the download area is, it just gets stuck at 50%
The only experience i have found to work is online editing, i think using a vector tile package would use a lot less data than a standard basemap, so if you need if you need make that argument re data usage, vtpk is the way to go, for my local government area its only 16mb
The other thing i have noticed is that Fieldmaps caches, so i wonder if you were connected to wifi you could pan around the map to 'fake' an offline download?
I was running into things getting stuck both creating the offline areas as well as downloading them.
As you know, you can't have a web map WITHOUT a basemap. Even if you select in Field Maps Offline tab that you are going to use an installed tile package for the basemap, it will still try to tile the basemap of the web map itself at the level of detail selected when you create the offline areas.
Default of "Neighborhood" can still be quite huge, and limits the size of the offline area you can sketch.
So, I created a simple vector tile package with just the City Limits polyline layer, and nothing else and set this as the basemap in the web map itself. Now, when I generate my offline areas, since the basemap is tiny (and not a huge tiled basemap that will be stuffed into the offline area when created), I can select the entire city (or whatever portion of it I want) as the offline area (even at LOD=Room), and it packages it just fine.
Then, I just use the "actual" basemap that is sideloaded on the device itself and all is good.
Since I switched to this method (having a tiny vector as the web map basemap), have not had issues creating/downloading the offline areas.
Hope this helps,
Thanks for the advice
Still having no luck.
I recreated my basemap, striped it out so that it was really small (just one boundary layer ~1.5mb), added it to my map and set the visibility really narrow (Cities to City) and its still not completing the offline download. Maybe there is something about my feature layers it does not like? Will test this by adding a simple layer to a field map enabled web map.
Do you have attachments on the data?
I have one dataset with a photo attached to each point. If I set the offline settings to sync the photos both ways, I often get error, or fails to finish (or I can only package a really small area). On this dataset, I have to set the offline settings to download and get updates for features only.
It gets too large and fails if it tries to download all the photos as well.
Thanks for highlighting the additional settings to try.
I think I have found the problem, i have two editable layers that are related, they both have heaps of domains. I created a copy of the webmap with these layers removed and just had my reference layer and basemap, downloads offline areas instantly! will check the service definition and see if attachments is set to true.
I have attachments allowed, and have a ton of them. But set to only sync back to AGOL, not to field maps so the photos go back to the cloud, but aren't included in the offline area downloaded to the device.
In the Manage Offline Areas (in Map detail setting tab or Field Maps) there is a setting to control that: