Map 在WP8中将多边形添加到贴图并更改不透明度/大小

Map 在WP8中将多边形添加到贴图并更改不透明度/大小,map,polygon,windows-phone,Map,Polygon,Windows Phone,我正在尝试将一个项目从WP7转移到WP8(从而将Bing地图更新到诺基亚的内置控件) 最初,我基于一整串(20)地理坐标来界定地图区域,这些坐标创建了一个MapPolygon,然后在将MapPolygon作为子控件添加到地图控件之前更改了MapPolygon的不透明度属性 当我试图转换到诺基亚的地图控件时,在我看来,没有办法指定要使用地理坐标创建的多边形区域,而是必须使用点。 这意味着当我在地图上放大和缩小时,多边形在屏幕上保持相同的形状。 当然,必须有一种方法允许多边形保持相同的比例大小,无论

我正在尝试将一个项目从WP7转移到WP8(从而将Bing地图更新到诺基亚的内置控件)

最初,我基于一整串(20)地理坐标来界定地图区域,这些坐标创建了一个MapPolygon,然后在将MapPolygon作为子控件添加到地图控件之前更改了MapPolygon的不透明度属性

当我试图转换到诺基亚的地图控件时,在我看来,没有办法指定要使用地理坐标创建的多边形区域,而是必须使用点。 这意味着当我在地图上放大和缩小时,多边形在屏幕上保持相同的形状。 当然,必须有一种方法允许多边形保持相同的比例大小,无论您放大/缩小

我知道必应地图仍然可以使用,但由于它已被弃用,我宁愿过渡到新的诺基亚地图

下面是我试图用来创建新映射的代码:

//Creating a Polygon
Polygon MyPolygon = new Polygon();


MyPolygon.Points.Add(new Point(2, 0));
MyPolygon.Points.Add(new Point(22, 0));
MyPolygon.Points.Add(new Point(2, 40));
MyPolygon.Stroke = new SolidColorBrush(Colors.Black);
MyPolygon.Fill = new SolidColorBrush(Colors.Black);
MyPolygon.SetValue(Grid.RowProperty, 1);
MyPolygon.SetValue(Grid.ColumnProperty, 0);
MyPolygon.Opacity = 0.5;

//Adding the Polygon to the Grid
//MyGrid.Children.Add(MyPolygon);

//Creating a MapOverlay and adding the Grid to it.
MapOverlay MyOverlay = new MapOverlay();
MyOverlay.Content = MyPolygon;

MyOverlay.GeoCoordinate = new GeoCoordinate(49.3393850118753, -0.4569707717895518);

//MyOverlay.PositionOrigin = new Point(0.99, 0.99);

//Creating a MapLayer and adding the MapOverlay to it
MapLayer MyLayer = new MapLayer();
MyLayer.Add(MyOverlay);

map1.Layers.Add(MyLayer);
我知道我可以将多边形添加到网格中,然后将网格添加到覆盖中,但这仍然无法解决问题。 但正如你所见,没有办法添加地理坐标。。。只有点


任何帮助都将不胜感激

您必须使用一些数学,我发现的最简单的方法是使用ConvertViewportPointToGeoCoordinate利用实际宽度和实际高度贴图属性获取贴图视口的坐标。这是你们可以得到关于中心的所有东西,或者你们想要用来保持比例的任何数学

您还可以使用地图多段线绘制将采用地理坐标的图形。

你应该在几乎所有的场景中都能看到

希望有帮助


//杰德

我肯定不是唯一遇到这个问题的人???