Windows Phone 7 中BingMap控制項的使用

來源:互聯網
上載者:User

      在使用BingMap時需要驗證密鑰(Access Key),因此我們先上BingMap官網註冊,註冊完全免費。如果沒有驗證密鑰將無法從Web上擷取BingMap服務。

註冊密鑰的BingMap官網網址:

https://www.bingmapsportal.com

如果使用者沒有Windows Live ID,則需要先註冊一個Live ID帳號(點擊Create).如果已有Live ID帳號,則直接登入(Sign In).

登入之後,點擊Create or View Keys

之後進入註冊Key的介面。填上相應資訊之後點擊確定,就可以獲得Key值了。儲存這個Key,之後會用到,只有擁有這個Key,我們才可以使用BingMap的各項功能。

在註冊完成之後,下面具體介紹如何使用BingMap控制項。

一.Map控制項顯示地圖

建立一個項目,然後添加一個Map控制項。這時會自動添加對Microsoft.Phone.Controls.Maps命名空間的引用。

添加之後,會再MainPage.xaml檔案中自動產生如下代碼:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"><!—以下是添加Map控制項自動產生的程式碼--><my:Map Height="519" HorizontalAlignment="Left" Margin="0,6,0,0" Name="bingmap" VerticalAlignment="Top" Width="450"<!—CredentialsProvider即為我們註冊獲得的Key,Map控制項不會自動產生這一句代碼,需要我們自己添加,並填寫我們申請到的Key-->CredentialsProvider ="AlMCuqBim0L8779R2CiBbEqhCc3cQpcRwDd82K2oJ2Ca6sF1k3jS_c1lx3WGzyjA">     </my:Map>  </Grid>

完成以上的工作之後,運行程式,我們便可以看見地圖了。下面是運行視圖:

二.添加地圖的縮放功能

首先我們添加一個ApplicationBar,並添加兩個Button代碼如下:

<phone:PhoneApplicationPage.ApplicationBar>        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">            <shell:ApplicationBarIconButton IconUri="Images/zoom-in.png" Text="ZoomIn" Click="ZoomInButton_Click"/>            <shell:ApplicationBarIconButton IconUri="Images/zoom-out.png" Text="ZoomOut" Click="ZoomOutButton_Click"/>        </shell:ApplicationBar>    </phone:PhoneApplicationPage.ApplicationBar>

之後在Button的Click事件的響應函數中添加如下代碼:

//BingMap的ZoomLevel即表示的地圖的視圖精度,是一個Double類型的數值       private void ZoomInButton_Click(object sender, EventArgs e)        {            ++bingmap.ZoomLevel;        }        private void ZoomOutButton_Click(object sender, EventArgs e)        {            --bingmap.ZoomLevel;        }

完成以上步驟之後我們便實現了地圖的縮放,運行視圖如下:

三.添加地圖和衛星視圖功能

我們添加在ApplicationBar中添加兩個MenuItem.代碼如下所示:

<shell:ApplicationBar.MenuItems>                <shell:ApplicationBarMenuItem Text="衛星視圖" Click="AerialMenuItem_Click"/>                <shell:ApplicationBarMenuItem Text="地圖視圖" Click="RoadMenuItem_Click"/>            </shell:ApplicationBar.MenuItems>

接著我們編寫他們的Click事件,代碼如下:

 private void RoadMenuItem_Click(object sender, EventArgs e)        {            bingmap.Mode = new RoadMode();        }        private void AerialMenuItem_Click(object sender, EventArgs e)        {            //AerialMode有兩個函數重載,當設定為true時,則表示顯示一些地圖資訊,//例如公路,名稱等。            //當設定為False時,只顯示地貌資訊,而沒有其他的多餘顯示            bingmap.Mode = new AerialMode(true);        }

這是運行效果視圖:

四.添加地圖定位置中的功能

     通過設定經緯度座標和地圖解析度,可以實現上面的功能,首先我們添加一個MenuItem,名為定位置中,並添加Click事件

接著我們去MainPage.XAML編寫它的事件響應函數,代碼如下:

 private void CenterMenuItem_Click(object sender, EventArgs e)        {            //兩種方式            //bingmap.Center = new System.Device.Location.GeoCoordinate(42.1, -122.8);            //bingmap.ZoomLevel = 15;//SetView有兩個參數,一個是定位座標的經緯度//另一個則是地圖顯示的解析度大小            bingmap.SetView(new GeoCoordinate(42.1, -122.8), 1000);        }

在這裡,以上的定位的座標點在這裡是我們自己設定的,在真實的應用中,一般通過Location Service來獲得使用者或其他的地理位置座標,然後代入SetView中,實現可換的位置定位功能。

五.添加地圖圖釘標示功能

我們在ApplicationBar中添加一個Button,代碼如下:

<shell:ApplicationBarIconButton IconUri="Images/pushbing.png" Text="PushBing" Click="PushBingButton_Click"/>

接著我們填寫Click事件響應函數,代碼如下:

private void PushBingButton_Click(object sender, EventArgs e)        {//建立一個圖層,我們用這個圖層來添加我們要用的標示圖釘            MapLayer maplayer = new MapLayer();           //圖層建好以後,我們需要把它添加到我們的地圖中去            bingmap.Children.Add(maplayer);           //準備工作完了以後我們就要開始建立我們的圖釘了            Pushpin pushbing = new Pushpin()            {//這是圖釘標示所在的地理位置                Location = new GeoCoordinate(41.8000, 123.38333),                //圖釘顯示的內容                Content="瀋陽"            };            //最後將這個圖釘添加到圖層中,這樣便可以標示出某一個地理位置了            maplayer.Children.Add(pushbing);        }

以上我們添加了一個圖釘,我們還可以添加其他的元素例如一張圖片(這裡需要指定圖片的路徑),或則多個圖釘,在元素建立好之後,只需要添加到圖層中即可。

下面是啟動並執行:

最後推薦一個BingMap的官網網址,其中有很多資源和樣本,非常值得一看

 

http://www.microsoft.com/maps/isdk/silverlight/

以上內容參考了Jake Lin 的視頻,在此推薦大家看看一看,相信會很有協助。

(著作權,轉載請標明出處)

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.