我想通过用一个函数替换硬编码的偏移值来旋转多边形(例如这个箭头),该函数可以传入nord指向偏移量和我希望箭头旋转的度数。
我尝试使用Rotation matrix,但效果不佳 可能是因为距离 1 Lat。 != 1长。
我正在尝试用这个做什么:
箭头必须代表车辆并沿车辆前进的方向旋转。
double centerLatitude = pos.Coordinate.Point.Position.Latitude;
double centerLongitude = pos.Coordinate.Point.Position.Longitude;
MapPolygon mapPolygon = new MapPolygon();
mapPolygon.Path = new Geopath(new List<BasicGeoposition>() {
new BasicGeoposition() {Longitude=centerLongitude, Latitude=centerLatitude},//top of the arrow
new BasicGeoposition() {Longitude=centerLongitude-0.001, Latitude=centerLatitude-0.0010},
new BasicGeoposition() {Longitude=centerLongitude-0.001, Latitude=centerLatitude-0.0030},
new BasicGeoposition() {Longitude=centerLongitude+0.001, Latitude=centerLatitude-0.0030},
new BasicGeoposition() {Longitude=centerLongitude+0.001, Latitude=centerLatitude-0.0010},
});
mapPolygon.ZIndex = 1;
mapPolygon.FillColor = Colors.Orange;
mapPolygon.StrokeColor = Colors.Blue;
mapPolygon.StrokeThickness = 2;
mapPolygon.StrokeDashed = false;
MainMap.MapElements.Add(mapPolygon);
答案 0 :(得分:3)
MapPolygons绑定到地图上的坐标。 UWP中的旋转变换不适用于MapPolygons。如果要旋转MapPolygon,则必须计算旋转坐标。 Bing Maps V8地图控件(web)提供了执行此操作的功能。以下是两种不同的方式:
空间准确(由于地图投影可能看起来不一样)
像素精确(看起来与旋转相同,但在空间上不准确)
答案 1 :(得分:0)
您尝试的最佳方法是使用XAML元素并将其作为子项添加到地图控件中。您可以在一个点(箭头或中心)将XAML固定到地图上。 尝试每帧更新多边形不会非常快或平滑,所以你真的不想使用地图多边形。 上面提到的一些链接假设地图总是在墨卡托投影中向北而不是倾斜,这对于UWP地图来说永远不会是真的,所以我不建议采用这种方法。