public void OverlayTilesReturnsTileForEmptyList() { var mapParameters = new MapParameters { mapWidth = 4, mapHeight = 4 }; var result = TileServiceUtils.OverlayTiles(mapParameters, new Dictionary <TileOverlayType, byte[]>()); byte[] expectedResult = null; using (Image <Rgba32> bitmap = new Image <Rgba32>(mapParameters.mapWidth, mapParameters.mapHeight)) { expectedResult = bitmap.BitmapToByteArray(); } for (int i = 0; i < expectedResult.Length; i++) { Assert.Equal(expectedResult[i], result[i]); } }
/// <summary> /// Gets a single tile with various types of data overlayed on it according to what is requested. /// </summary> /// <param name="request">The tile request</param> /// <returns>A TileResult</returns> public async Task <byte[]> GetMapData(TileGenerationRequest request) { log.LogInformation("Getting map tile"); log.LogDebug("TileGenerationRequest: " + JsonConvert.SerializeObject(request)); log.LogDebug("Awaiting tiles to be completed"); var overlays = await Task.WhenAll(request.overlays.Select(overlay => RequestTile(request, overlay))); log.LogDebug($"Tiles completed: {overlays.Count()} overlays"); var overlayTile = TileServiceUtils.OverlayTiles(request.mapParameters, overlays.ToDictionary(k => k.Item1, v => v.Item2)); log.LogDebug("Tiles overlaid"); overlayTile = ScaleTile(request, overlayTile); log.LogDebug("Tiles scaled"); return(overlayTile); }
/// <summary> /// Gets a map tile with DXF linework on it. /// </summary> /// <param name="parameters">Map parameters such as bounding box, tile size, zoom level etc.</param> /// <param name="dxfFiles">The list of DXF files to overlay tiles for</param> /// <returns>A bitmap</returns> public async Task <byte[]> GetDxfBitmap(MapParameters parameters, IEnumerable <FileData> dxfFiles) { log.LogInformation("GetDxfBitmap"); byte[] overlayData = null; if (dxfFiles != null && dxfFiles.Any()) { List <byte[]> tileList = new List <byte[]>(); foreach (var dxfFile in dxfFiles) { if (dxfFile.ImportedFileType == ImportedFileType.Linework) { tileList.Add(await JoinDxfTiles(parameters, dxfFile)); } } log.LogDebug("Overlaying DXF bitmaps"); overlayData = TileServiceUtils.OverlayTiles(parameters, tileList); } return(overlayData); }