【Bing Map學習系列】(6)——如何使用Bing Maps Silverlight Control繪製多邊形

來源:互聯網
上載者:User
文章目錄
  • 三、通過Map控制項進行配置

上一章【Bing Map學習系列】(5)——如何使用圖釘層和地圖層介紹了如何使用圖釘層和地圖層,本章將詳細的介紹如何使用Bing Maps Silverlight Control繪製多邊形。

本文感謝原創:http://www.cnblogs.com/beniao/archive/2009/12/09/1616956.html

Bing Maps Silverlight Control支援使用者自訂繪製多邊形(Polygon)圖形,包括三角形、四邊形(矩形、菱形)、以及其他更多多邊形的圖形繪製。多邊形說簡單點就是一個由多條邊組成的有一定規則的圖形,比如三角形就是由三條邊組成,我們要在地圖上繪製三角形需要知道三個頂點的座標值(精度和緯度),如下代碼塊MainPage.xaml:

<UserControl x:Class="SilverlightApplication1.MainPage"<br /> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<br /> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<br /> xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"<br /> xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"<br /> mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="500"><br /> <Grid x:Name="LayoutRoot" Width="500" Height="500"><br /> <m:Map CredentialsProvider="AmreePcQ50WyjCYvxNo0xUQDwiYVM8VFVTxmcW_1RmOb2x_7T1muW-fSTQQkOok1" x:Name="map"<br /> Center="34.9294740237661,107.506492025863" ZoomLevel="4" NavigationVisibility="Collapsed"><br /> <m:Pushpin Location="33.845881352,105.165628188471" x:Name="mayPushpin"></m:Pushpin><br /> <m:MapLayer x:Name="myMapLayer"></m:MapLayer><br /> </m:Map><br /> <StackPanel HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="180" Height="200" Background="Gray"></p><p> <Button x:Name="btnPolygon" Click="btnPolygon_Click" Content="添加多邊形"></Button><br /> </StackPanel><br /> </Grid><br /></UserControl>

一、繪製三角形

根據上面的Silverlight代碼,在 MainPage.xaml.cs檔案中添加相關的事件即可繪製三角形:

private void btnPolygon_Click(object sender, RoutedEventArgs e)<br />{<br /> MapPolygon polygon = new MapPolygon();<br /> polygon.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);<br /> polygon.StrokeThickness = 5;<br /> polygon.Opacity = 0.7;<br /> polygon.Locations = new LocationCollection() {<br /> new Location(34.9294740237661,107.506492025863),<br /> new Location(37.7814222409819, 105.979148275863),<br /> new Location(40.2865067209496, 109.219382650863) };<br /> this.map.Children.Add(polygon);<br />}

MapPolygon就是Bing Maps提供的一個多邊形類,如上代碼塊則實現了在地圖上繪製一個三角形,主要就是利用三個點的座標通過Locations進行定位繪製圖層,效果如下:

相應的如果是繪製四變形也就是多一個頂點的多邊形而已,如下面部分所示。

二、繪製四邊形

根據上面的Silverlight代碼,在 MainPage.xaml.cs檔案中添加相關的事件即可繪製四邊形:

private void btnPolygon_Click(object sender, RoutedEventArgs e)<br /> {<br /> MapPolygon polygon = new MapPolygon();<br /> //填充顏色<br /> polygon.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);<br /> polygon.Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Yellow);<br /> polygon.StrokeThickness = 5;<br /> polygon.Opacity = 0.7;<br /> polygon.Locations = new LocationCollection() {<br /> new Location(34.9294740237661,107.506492025863),<br /> new Location(37.7814222409819, 105.979148275863),<br /> new Location(40.2865067209496, 109.219382650863),<br /> new Location(29.8104584489867, 115.943992025863)};<br /> this.map.Children.Add(polygon);</p><p> }

如下面所示:

三、通過Map控制項進行配置

除了上面通過代碼動態繪製多邊形外,也可以通過Map控制項進行配置,如下樣本:

<m:Map CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name="myMap"<br /> Center="34.9294740237661,107.506492025863" ZoomLevel="4" NavigationVisibility="Collapsed"><br /> <m:MapPolygon Locations="30,108 39,102 34.88,90.021" Fill="Red" StrokeThickness="5" Opacity="0.8"></m:MapPolygon><br /></m:Map><br />

如中紅色的三角形就是通過初始化配置進去的,平時二次開發中使用動態建立相對較多。上面提到四邊形分菱形和矩形,Bing Maps 也提供了專門繪製矩形和菱形的類,比如矩形是Rectangle類。二次開發中經常會涉及到需要自己繪製一些圖形在地圖上,或者是在地圖上動態選擇繪製,瞭解繪製圖形的基本原理後實現這些都非常簡單,實際上就是給Map控制項添加一個子項目,也可以理解為Silverlight的UIElement。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.