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)); }
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); }
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); }