예제 #1
0
            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);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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();
        }
예제 #5
0
        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));
        }
예제 #6
0
 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
            });
        }
예제 #8
0
        public override NSUrl URLForTilePath(MKTileOverlayPath path)
        {
            var url = string.Format(this.tileUrl, path.Z, path.X, path.Y);

            return(NSUrl.FromString(url));
        }
예제 #9
0
 public override void LoadTileAtPath(MKTileOverlayPath path, MKTileOverlayLoadTileCompletionHandler result)
 {
     base.LoadTileAtPath(path, result);
 }
예제 #10
0
 public static NSString GetKey(this MKTileOverlayPath path)
 {
     return(new NSString($"{path.Z}/{path.X}/{path.Y}"));
 }