2012-11-11 16 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

相關問題