Best Practices
Build Fast Maps for the Geocortex Mobile App Framework
Geocortex Mobile App Framework can run on devices that are less powerful than your typical desktop or laptop computer, such as iOS devices, Android devices, and Windows tablets. It is important to optimize your maps to run smoothly in the Geocortex Mobile App Framework. We recommend that you focus on three areas:
Organize Map Data into the Fastest Service and Layer Types
-
For layers that do not change frequently, do not need to be queried by end users, and do not need visibility toggled dynamically, use a tile package (TPK), since this is the fastest performing layer type. TPKs consist of pre-rendered static image tiles and therefore render very quickly. We recommend that you move as much of your map data as possible into the TPK.
-
For read-only layers that change more frequently, or that you need to query, use dynamic map services because they are much faster than feature layers. Offline dynamic map services render faster than feature layers because the HTML client does not need to retrieve all the geometry and attribute data. Also, when panning the map, transforms are applied to a single static image rather than complex vector data.
-
Only use feature layers for layers that you need to edit, as they are the slowest service type. Feature layers are the slowest type of service because all the geometry and attribute information needs to be retrieved, and the vector data is then rendered in software using JavaScript.
Minimize the Number of Layers
Each platform has an ideal and maximum number of client-rendered feature layers that it can display simultaneously, regardless of whether the layers are from feature layers or dynamic map services. Exceeding these limits may degrade performance.
-
Windows:
-
Ideal for Best Performance: 7 or fewer feature layers
-
Recommended Maximum: 20 feature layers
-
-
iOS:
-
Ideal for Best Performance: 3 or fewer feature layers
-
Recommended Maximum: 12 feature layers
-
-
Android:
-
Ideal for Best Performance: 3 or fewer feature layers
-
Recommended Maximum: 12 feature layers
-
Minimize Feature Layer Complexity
-
Reduce the number of output fields ("outFields" properties) in your feature layer to only those that you want to edit or symbolize. This reduces the need to query unneeded attributes every time an event happens on the map, such as a pan or zoom. The maximum number of supported output fields is 20.
-
Keep the number of features and vertices in a layer to a minimum. If you have a large number of features, but only a subset of those are needed for your field workers’ tasks, then only load the features that are needed onto their map. If your features have many vertices, consider generalizing to reduce complexity. Depending on the map, reducing complexity might mean filtering a layer and rendering fewer features, or it might mean generalizing the features that are being returned.
We recommend having fewer than 100 features at medium complexity (10-15 vertices per feature) within the extent view.
-
Change the visible layer scale to reduce the number of visible features. Only show features at extents that users need them to show. Showing numerous features at far away scales can reduce performance significantly.
Choose the Right Basemaps for your Needs
The Geocortex Mobile App Framework supports the following types of basemap:
-
Pre-generated Offline Basemaps: Use pre-generated offline basemaps when you know in advance which areas users need to access, because pre-generated offline basemaps have the fastest performance. If the exact area is not known, consider creating a larger tile package (TPK) to ensure adequate coverage.
To reduce transfer times of large TPK files, manually copy TPK files directly to the Android, iOS, or Windows device.
-
Custom Offline Basemaps: Use custom offline basemaps when you do not know in advance which areas users need to access. Custom offline basemaps allow users to define the area and generate the TPK when they are in the field. As custom offline basemaps must be generated, they are slower to download. We recommend limiting data sizes of custom offline basemaps so that users do not need to wait too long for them to generate and download the TPK.
Reduce Synchronization Times
The Geocortex Mobile App Framework does two-way synchronizations, first uploading any changes made by the user and then downloading any changes made on the server. To reduce synchronization times, the Geocortex Mobile App Framework only synchronizes tile package (TPK) basemaps if a change to the basemap is detected. However, synchronization times can still be lengthy so we have the following recommendations to make your synchronizations are as quick and smooth as possible:
-
Synchronizing is a server-heavy task: all the data is generated on the server and performance is limited by the server's resources. We recommend using ArcGIS Enterprise 10.5 (or ArcGIS Server if using ArcGIS 10.4 or prior) over ArcGIS Online, as the Geocortex Mobile App Framework can only manage approximately 20 concurrent synchronizations with ArcGIS Online as of 2016, depending on the data. Using ArcGIS Server, you can scale your server resources to handle the capacity of concurrent synchronizations your organization needs.
-
If your organization has a large field workforce (over 100 users), we recommend synchronizing the Geocortex Mobile App Framework outside of regular work hours. If all your workers try to synchronize at the start of the work day, some of them will be placed in a queue. For example, with a 200 MB replica and 100 users doing concurrent downloads using a single ArcGIS Server, it could take up to 3 hours to complete the synchronization.
-
To reduce synchronization times, minimize the number and size of attachments.
-
Ensure the basemap in your Offline Map does not use a Well-Known Text (WKT) as its spatial reference; use a basemap with a Well-Known ID (WKID) instead.
-
Ensure all your features can be represented within the spatial reference of the basemap in your Offline Map.
Maximum Limits
-
The maximum number of Offline Maps is 1500.
-
The ideal maximum TPK size is 10 GB, however, the actual maximum size is dependent on the capabilities of your device. TPKs of up to 40 GB can work successfully on more powerful devices.
-
The maximum number of supported output fields is 20.
Use a Single Sign-in Method
We recommend signing in with the same method if multiple users share the same device, as they could have different access privileges to different maps, which can cause problems.