Esempio n. 1
0
        private async Task <TBitmap> FetchBitmap(BitmapTile tile, IList <BitmapTile> tilesList)
        {
            TRawBitmap rawBitmap = await _tileLayer.GetTileBitmap(tile.Tile);

            if (rawBitmap != null)
            {
                tilesList.Remove(tile);
            }
            return(rawBitmap == null ? null : ReadBitmap(rawBitmap));
        }
Esempio n. 2
0
        public BitmapSize?GetOffsetFromCoordinates(MapPoint coordinates)
        {
            BitmapTile targetTile = _collection.FirstOrDefault(tile => tile.ContainsCoordinates(coordinates));

            if (targetTile == null)
            {
                return(null);
            }
            BitmapRect bounds     = GetSquareBitmapBounds(targetTile.Tile);
            BitmapSize tileOffset = targetTile.GetOffsetFromCoordinates(coordinates, _totalSize, _zoom);

            return(new BitmapSize(bounds.Left + tileOffset.Width, bounds.Top + tileOffset.Height));
            //return targetTile == null ? null : (BitmapSize?)targetTile.GetOffsetFromCoordinates(coordinates, _totalSize, _zoom);
        }
Esempio n. 3
0
        public MapPoint?MoveCenterForView(float xOffset, float yOffset)
        {
            BitmapTile tile = _collection.FirstOrDefault() ?? EnumerateBitmapTiles().FirstOrDefault();

            if (tile == null || tile.Bounds.Width * tile.Bounds.Height == 0)
            {
                return(null);
            }
            double    correctionScale = Math.Pow(2.0, _zoom - tile.Tile.Zoom);
            MapVector size            = tile.Tile.GetActualSquare().Size;
            double    xScale          = size.LongitudeOffset / (double)_tileSize.Width / correctionScale;
            double    yScale          = size.LatitudeOffset / (double)_tileSize.Height / correctionScale;
            double    longitudeOffset = xScale * xOffset;
            double    latitudeOffset  = yScale * yOffset;

            _center = new MapPoint(_center.Latitude - latitudeOffset, _center.Longitude + longitudeOffset);
            return(_center);
        }