Пример #1
0
        public TileDef[] GetTiles(int levelOfDetail, Rect requestRect, out int width, out int height)
        {
            uint  tileCountOfWidth = GetMapSize(levelOfDetail) / (uint)_tileSize.Width;
            float resTileX         = (float)(_mapFullRect.Width / tileCountOfWidth);
            float resTileY         = (float)(_mapFullRect.Height / tileCountOfWidth);
            uint  bx = 0;

            if (requestRect.X > _mapFullRect.X)
            {
                bx = (uint)((requestRect.X - _mapFullRect.X) / resTileX);
            }
            uint by = 0;

            if (requestRect.Y > _mapFullRect.Y)
            {
                by = (uint)((requestRect.Y - _mapFullRect.Y) / resTileY);
            }
            uint offset = 1;

            if (levelOfDetail == 1)
            {
                offset = 0;
            }
            uint ex = bx + offset + (uint)Math.Ceiling(Math.Min(requestRect.Width, _mapFullRect.Width) / resTileX);
            uint ey = by + offset + (uint)Math.Ceiling(Math.Min(requestRect.Height, _mapFullRect.Height) / resTileY);

            width  = (int)((ex - bx) * _tileSize.Width);
            height = (int)((ey - by) * _tileSize.Height);
            List <TileDef> tiles = new List <TileDef>();

            for (uint c = bx; c < ex; c++)
            {
                for (uint r = by; r < ey; r++)
                {
                    string  quadkey = TileXYToQuadKey(c, r, levelOfDetail);
                    Rect    rect    = new Rect(_mapFullRect.X + c * resTileX, _mapFullRect.Y + r * resTileY, resTileX, resTileY);
                    TileDef tile    = new TileDef(r, c, rect, quadkey);
                    tiles.Add(tile);
                }
            }
            return(tiles.Count > 0 ? tiles.ToArray() : null);
        }
Пример #2
0
 //
 public string GetMapImageUrl(TileDef tileDef)
 {
     return(string.Format(_urlTemplate, tileDef.Quadkey));
 }
Пример #3
0
 public string GetMapImageUrl(TileDef tileDef)
 {
     _mapServiceClient.GetMapImageByQuadkeyAsync(tileDef.Quadkey, tileDef.Rect.X, tileDef.Rect.Y, tileDef.Rect.Width, tileDef.Rect.Height, 256, 256);
     return(null);
 }