public override NSUrl URLForTilePath(MKTileOverlayPath path) { //Here we write the code for creating the url. var url = urlTemplate.Replace("{z}", path.Z.ToString()).Replace("{x}", path.X.ToString()).Replace("{y}", path.Y.ToString()); return(new NSUrl(url)); }
public override void LoadTileAtPath(MKTileOverlayPath path, MKTileOverlayLoadTileCompletionHandler result) { var key = path.GetKey(); var data = _cache.ObjectForKey(key) as NSData; if (data != null) { result.Invoke(data, null); return; } if (path.Z > MaximumZ) { var cut = Normalize(path, MaximumZ); data = _cache.ObjectForKey(key) as NSData; if (data != null) { result.Invoke(data, null); return; } base.LoadTileAtPath(cut.Path, (tileData, error) => { if (tileData != null) { tileData = ProcessImage(tileData, cut); _cache.SetObjectforKey(tileData, key); } result.Invoke(tileData, error); }); return; } base.LoadTileAtPath(path, result); }
public override NSUrl URLForTilePath(MKTileOverlayPath path) { var name = $"logo_xam_{((path.X + path.Y) % 2)}.png"; var file = Path.Combine(NSBundle.MainBundle.BundlePath, name); return(NSUrl.FromFilename(file)); }
public override void LoadTileAtPath(MKTileOverlayPath path, MKTileOverlayLoadTileCompletionHandler result) { NSUrl url = urlForTilePath(path); NSMutableUrlRequest request = new NSMutableUrlRequest(url); request.HttpMethod = "GET"; NSUrlSession.SharedSession.CreateDataTask(request, (data, response, error) => { result(data, null); }).Resume(); }
public NSUrl urlForTilePath(MKTileOverlayPath path) { double left = xOfColumn(path.X, path.Z); double right = xOfColumn(path.X + 1, path.Z); double bottom = yOfRow(path.Y + 1, path.Z); double top = yOfRow(path.Y, path.Z); string resolvedUrl = urlString + "&BBOX=" + left + "," + bottom + "," + right + "," + top; return(new NSUrl(resolvedUrl)); }
public override void LoadTileAtPath(MKTileOverlayPath path, MKTileOverlayLoadTileCompletionHandler result) { if (TileService != null) { Tile tile = TileService.TryGetTile((int)path.X, (int)((int)Math.Pow(2, path.Z) - 1 - path.Y), (int)path.Z); if (tile != null) { NSData tileData = NSData.FromArray(tile.TileData); result.Invoke(tileData, null); } } }
private CutMapTile Normalize(MKTileOverlayPath path, int maxZoom) { var divisor = 1 << ((int)path.Z - maxZoom); return(new CutMapTile { Path = new MKTileOverlayPath { ContentScaleFactor = path.ContentScaleFactor, X = path.X / divisor, Y = path.Y / divisor, Z = maxZoom }, XOffset = path.X % divisor, YOffset = path.Y % divisor, Scale = divisor }); }
public override NSUrl URLForTilePath(MKTileOverlayPath path) { var url = string.Format(this.tileUrl, path.Z, path.X, path.Y); return(NSUrl.FromString(url)); }
public override void LoadTileAtPath(MKTileOverlayPath path, MKTileOverlayLoadTileCompletionHandler result) { base.LoadTileAtPath(path, result); }
public static NSString GetKey(this MKTileOverlayPath path) { return(new NSString($"{path.Z}/{path.X}/{path.Y}")); }