Пример #1
0
        private static async Task DownloadMapAsync(PortalItem portalItem)
        {
            Map onlineMap          = new Map(portalItem);
            var takeMapOfflineTask = await OfflineMapTask.CreateAsync(onlineMap);

            // Create the job to generate an offline map, pass in the parameters and a path to
            //store the map package.
            var parameters = new GenerateOfflineMapParameters()
            {
                MaxScale       = 5000,
                IncludeBasemap = true,
            };
            var path = MapAreaManager.GetOfflineMapPath("reference_base_map", true);

            GenerateOfflineMapJob generateMapJob =
                takeMapOfflineTask.GenerateOfflineMap(parameters, path);

            // Generate the offline map and download it.
            GenerateOfflineMapResult offlineMapResult = await generateMapJob.GetResultAsync();

            if (!offlineMapResult.HasErrors)
            {
                // Job completed successfully and all content was generated.
                Debug.WriteLine("Map " +
                                offlineMapResult.MobileMapPackage.Item.Title +
                                " was saved to " +
                                offlineMapResult.MobileMapPackage.Path);
            }
            else
            {
                // Job is finished but one or more layers or tables had errors.
                if (offlineMapResult.LayerErrors.Count > 0)
                {
                    // Show layer errors.
                    foreach (var layerError in offlineMapResult.LayerErrors)
                    {
                        Debug.WriteLine("Error occurred when taking " +
                                        layerError.Key.Name +
                                        " offline. Error : " +
                                        layerError.Value.Message);
                    }
                }
                if (offlineMapResult.TableErrors.Count > 0)
                {
                    // Show table errors.
                    foreach (var tableError in offlineMapResult.TableErrors)
                    {
                        Debug.WriteLine("Error occurred when taking " +
                                        tableError.Key.TableName +
                                        " offline. Error : " +
                                        tableError.Value.Message);
                    }
                }
            }
        }
Пример #2
0
        internal static async Task <List <MapArea> > GetMapAreasAsync(string mapId)
        {
            ArcGISPortal arcGISOnline = await ArcGISPortal.CreateAsync();

            var portalItem = await PortalItem.CreateAsync(arcGISOnline, mapId);

            var offlineTask = await OfflineMapTask.CreateAsync(portalItem);

            var mapAreas = await offlineTask.GetPreplannedMapAreasAsync();

            var model = new List <MapArea>();

            foreach (PreplannedMapArea mapArea in mapAreas)
            {
                await mapArea.LoadAsync();

                PortalItem preplannedMapItem = mapArea.PortalItem;
                var        thumbnail         = await preplannedMapItem.Thumbnail.ToImageSourceAsync();

                var path = MapAreaManager.GetOfflineMapPath(preplannedMapItem.ItemId);
                var offlineMapPackage = default(MobileMapPackage);
                try
                {
                    offlineMapPackage = await MobileMapPackage.OpenAsync(path);
                } catch (FileNotFoundException)
                {
                    /* this is expected when the map has not been downloaded yet */
                }

                model.Add(new MapArea()
                {
                    Id            = preplannedMapItem.ItemId,
                    Title         = preplannedMapItem.Title,
                    Thumbnail     = thumbnail,
                    Snippet       = preplannedMapItem.Snippet,
                    Payload       = mapArea,
                    OfflineTask   = offlineTask,
                    IsDownloaded  = (offlineMapPackage != null),
                    IsDownloading = false
                });
            }

            return(model);
        }