2012-11-11 17 views
0

我试图将项目从WP7转移到WP8(因此从Bing地图更新为诺基亚的内置控件)。向WP8中的地图添加多边形并更改不透明度/大小

本来我已经基于GeoCoordinates的全部(20)地图区域创建了一个MapPolygon,然后在将MapPolygon添加为地图控件之前更改了MapPolygon的不透明属性。

因为我试图过渡到诺基亚的地图控制,在我看来,没有办法指定我想要使用GeoCoordinates创建的多边形的区域,但必须使用点代替。 这意味着当我在地图上放大和缩小时,Polygon在屏幕上保持相同的形状。 无论你放大还是缩小,当然必须有一种方法让多边形保持相同的比例大小?!?!?

我知道Bing地图仍然可以使用,但因为它已被弃用,我宁愿转换到新的诺基亚地图。

这里是我试图用它来创建新的映射代码:

//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); 

我明白,我可以添加多边形到一个网格,然后网格的覆盖,但仍然赢得了解决不了问题。 但正如你所看到的,没有办法添加GeoCoordinates ...只有点。

任何帮助将不胜感激!

+0

当然,我不是唯一遇到过这个问题的人? –

回答

0

那么你将不得不使用一些数学并没有什么,但我发现这是由使用ConvertViewportPointToGeoCoordinate撬动ActualWidth的和的ActualHeight地图属性来获取地图视口的坐标最简单的方法。这是你可以把所有相对于中心或任何你想用来保持比例的数学。

您还可以使用一个MapPolyline进行绘制,这将采取地理坐标。 http://msdn.microsoft.com/en-us/library/microsoft.maps.mapcontrol.mappolyline.aspx

那么几乎在任何情况下都应该涵盖你。

希望能帮助吗?

// Jed

相关问题