You can take certain utility network
The following code takes a web map offline that contains a utility network. The utility network tables are automatically synced with the map when a utility network is detected within.
// Create an offline map task with the map. val offlineMapTask = OfflineMapTask(map) val offlineMapParameters = offlineMapTask.createDefaultGenerateOfflineMapParameters(areaOfInterest).getOrElse { error -> return showError("Error creating default generate offline map parameters: ${error.message}") } offlineMapParameters.includeBasemap = false // Create an offline map job with the download directory path and parameters and start the job. val offlineMapJob = offlineMapTask.createGenerateOfflineMapJob(offlineMapParameters, offlineMapPath)
// Start the job. offlineMapJob.start() offlineMapJob.result().onFailure { error -> showError("Error in offline map job: ${error.message}") }.onSuccess { offlineMapResult -> if (offlineMapResult.offlineMap.utilityNetworks.size > 0) { val utilityNetwork = offlineMapResult.offlineMap.utilityNetworks[0] utilityNetwork.load().getOrElse { error -> showError("Error loading utility network: ${error.message}") } } else { showError("No utility network found in offline map. ") } }The following code takes a utility network offline using a service geodatabase. The utility network tables only get synced when the sync mode in the generate geodatabase parameters is set to sync system tables.
// Create a geodatabase sync task with the feature service url. val geodatabaseSyncTask = GeodatabaseSyncTask(featureServerUrl) geodatabaseSyncTask.load().onFailure { error -> return showError("Error fetching geodatabase metadata. ${error.message}") } // Create generate geodatabase parameters for the selected extents. val geodatabaseParameters = geodatabaseSyncTask.createDefaultGenerateGeodatabaseParameters(areaOfInterest).getOrElse { error -> return showError("Error creating geodatabase parameters: ${error.message}") } geodatabaseParameters.returnAttachments = false
// Create a generate geodatabase job. val geodatabaseJob = geodatabaseSyncTask.createGenerateGeodatabaseJob(geodatabaseParameters, geodatabaseFilePath) // Start the generateGeodatabase job. geodatabaseJob.start() geodatabaseJob.result().onFailure { error -> return showError("Error generating geodatabase: ${error.message}") }.onSuccess { geodatabase -> if (geodatabase.utilityNetworks.isNotEmpty()) { val utilityNetwork = geodatabase.utilityNetworks[0] utilityNetwork.load().getOrElse { error -> showError("Error loading utility network: ${error.message}") } } else { showError("No utility network found in geodatabase. ") } }For more information about offline workflows using ArcGIS Maps SDKs for Native Apps, see the Offline maps, scenes, and data topic.