public static OfflinePackRegion ToFormsRegion(this MGLTilePyramidOfflineRegion region) { if (region == null) { return(null); } var output = new OfflinePackRegion(); output.Bounds = new Bounds(region.Bounds.sw.toFormsPosition(), region.Bounds.ne.toFormsPosition()); output.MaximumZoomLevel = region.MaximumZoomLevel; output.MinimumZoomLevel = region.MinimumZoomLevel; output.StyleURL = region.StyleURL?.AbsoluteString; return(output); }
public static OfflinePackRegion ToFormsRegion(this MGLTilePyramidOfflineRegion region) { if (region == null) { return(null); } var output = new OfflinePackRegion { Bounds = region.Bounds.ToLatLngBounds(), MaximumZoomLevel = region.MaximumZoomLevel, MinimumZoomLevel = region.MinimumZoomLevel, StyleURL = region.StyleURL?.AbsoluteString }; return(output); }
public Task <OfflinePack> DownloadMap(OfflinePackRegion formsRegion, Dictionary <string, string> packInfo, IOfflineStorageDelegate downloadDelegate = null) { this.downloadDelegate = downloadDelegate; var tsc = new TaskCompletionSource <OfflinePack>(); var region = new MGLTilePyramidOfflineRegion( new NSUrl(formsRegion.StyleURL), new MGLCoordinateBounds() { sw = TypeConverter.FromPositionToCoordinate(formsRegion.Bounds.SouthWest), ne = TypeConverter.FromPositionToCoordinate(formsRegion.Bounds.NorthEast) }, formsRegion.MinimumZoomLevel, formsRegion.MaximumZoomLevel); NSData context = null; if (packInfo != null) { var keys = new List <NSString>(); var values = new List <NSString>(); foreach (string key in packInfo.Keys) { keys.Add((NSString)key); values.Add((NSString)packInfo[key]); } var userInfo = NSDictionary.FromObjectsAndKeys(keys.ToArray(), values.ToArray()); context = NSKeyedArchiver.ArchivedDataWithRootObject(userInfo); } MGLOfflineStorage.SharedOfflineStorage().AddPackForRegion(region, context, (pack, error) => { if (error != null) { System.Diagnostics.Debug.WriteLine("Couldn't create offline pack: " + error.LocalizedFailureReason); tsc.TrySetResult(null); } else { pack.Resume(); var formsPack = pack.ToFormsPack(); tempPacks.Add(pack.GetNativeHash(), formsPack); tsc.TrySetResult(formsPack); } }); return(tsc.Task); }
public static OfflinePackRegion ToFormsRegion(this MGLTilePyramidOfflineRegion region) { if (region == null) { return(null); } var output = new OfflinePackRegion(); output.Bounds = new CoordinateBounds() { SouthWest = TypeConverter.FromCoordinateToPosition(region.Bounds.sw), NorthEast = TypeConverter.FromCoordinateToPosition(region.Bounds.ne), }; output.MaximumZoomLevel = region.MaximumZoomLevel; output.MinimumZoomLevel = region.MinimumZoomLevel; output.StyleURL = region.StyleURL?.AbsoluteString; return(output); }