UWP MapControl抗锯齿属性查找及瓦片坐标参数关联问询
UWP MapControl MapPolyline显示粗糙及自定义瓦片参数转换问题
初始问题
我在使用UWP MapControl添加MapPolylines时发现线条显示效果粗糙,推测存在对应的*抗锯齿(antialiasing)*属性,但未在MapControl官方文档中找到相关配置项,相关C#实现代码如下:
var mapPolyline = new MapPolyline(); var geoPositions = new List<BasicGeoposition>(); foreach (var vertex in polyLine.Vertex) { // 此处添加BasicGeoposition坐标点 }; mapPolyline.StrokeColor = Colors.Black; mapPolyline.StrokeThickness = 1; mapPolyline.Path = new Geopath(geoPositions); ((MapElementsLayer)impotMapLayer).MapElements.Add(mapPolyline);
更新1(基于答复补充)
后续查阅了相关官方文档以及MapTileBitmapRequestedEventArgs类说明,但未明确该类X、Y属性的具体含义,文档仅说明X为请求瓦片的X值、Y为请求瓦片的Y值。运行MSDN提供的示例后得到了如下X、Y、Zoom日志数据:
X 6073 Y 2617 Zoom 13 X 6072 Y 2616 Zoom 13 X 6071 Y 2615 Zoom 13 X 6071 Y 2617 Zoom 13 X 6072 Y 2614 Zoom 13 X 6073 Y 2615 Zoom 13 X 6071 Y 2616 Zoom 13 X 6073 Y 2614 Zoom 13 X 6072 Y 2615 Zoom 13 ...
希望明确这些数值的具体定义,以及在已有经纬度顶点集合的前提下,如何将其与这些参数关联以生成自定义瓦片图像。
更新2:解决方案
参考Bing地图瓦片系统官方文档,使用TileSystem类完成一系列转换即可实现需求:
namespace Microsoft.MapPoint { static class TileSystem ...
MapTileBitmapRequestedEventArgs的X、Y为瓦片的XY坐标,需传入TileSystem.TileXYToPixelXY方法处理,最终实现代码如下:
private async void customDataSource_BitmapRequestedAsync(CustomMapTileDataSource sender, MapTileBitmapRequestedEventArgs args) { var deferral = args.Request.GetDeferral(); TileSystem.TileXYToPixelXY(args.X, args.Y, out int pixelX, out int pixelY); TileSystem.PixelXYToLatLong(pixelX, pixelY, args.ZoomLevel, out double lat, out double lng); Debug.WriteLine($"lat {lat} lng {lng} Zoom {args.ZoomLevel}"); // 后续步骤:根据TileSystem.PixelXYToLatLong返回的坐标从自定义折线数组中提取对应数据 // 最终将数据传入CreateBitmapAsStreamAsync方法生成待绘制的图像 args.Request.PixelData = await CreateBitmapAsStreamAsync(待绘制数组); deferral.Complete(); }
内容的提问来源于stack exchange,提问作者NoWar
相关产品推荐
相关产品推荐

