public HttpResponseMessage GetTile(string layerId, string accessId, int z, int x, int y) { // Create the LayerOverlay for displaying the map. LayerOverlay layerOverlay; // The FilterStyle overlay is not stored in CachedOverlay. if (layerId == "FilterStyle") { layerOverlay = GetFilterStyleOverlay(accessId); } else { layerOverlay = cachedOverlays[layerId]; } // Draw the map and return the image back to client in an HttpResponseMessage. using (Bitmap bitmap = new Bitmap(256, 256)) { PlatformGeoCanvas geoCanvas = new PlatformGeoCanvas(); RectangleShape boundingBox = WebApiExtentHelper.GetBoundingBoxForXyz(x, y, z, GeographyUnit.Meter); geoCanvas.BeginDrawing(bitmap, boundingBox, GeographyUnit.Meter); layerOverlay.Draw(geoCanvas); geoCanvas.EndDrawing(); MemoryStream memoryStream = new MemoryStream(); bitmap.Save(memoryStream, ImageFormat.Png); HttpResponseMessage responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new ByteArrayContent(memoryStream.ToArray()); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return(responseMessage); } }
private HttpResponseMessage DrawTileImage(LayerOverlay layerOverlay, int z, int x, int y) { using (Bitmap bitmap = new Bitmap(256, 256)) { PlatformGeoCanvas geoCanvas = new PlatformGeoCanvas(); RectangleShape boundingBox = WebApiExtentHelper.GetBoundingBoxForXyz(x, y, z, GeographyUnit.Meter); geoCanvas.BeginDrawing(bitmap, boundingBox, GeographyUnit.Meter); layerOverlay.Draw(geoCanvas); geoCanvas.EndDrawing(); MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Png); HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.OK); msg.Content = new ByteArrayContent(ms.ToArray()); msg.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return(msg); } }