歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Windows Phone 8 Nokia地圖控件

Windows Phone 8 Nokia地圖控件

日期:2017/3/1 9:53:50   编辑:Linux編程

相信大家知道 Windows phone 8 設備家族中非常耀眼的一款是 Nokia Lumia 920 但是有一點同學們未必知道知道 Nokia除了是老牌手機硬件廠商之外,Nokia的地圖服務也是非常牛氣的。 目前雅虎等網站已經完全采用Nokia地圖庫,而且windows phone 中的bing地圖也在移植Nokia 地圖庫, windows phone 8 中已經原生集成Nokia 地圖控件,那麼今天我給大家介紹一下 windows phone 8 中的Nokia地圖控件。

此文是 升級到WP8必需知道的13個特性 系列的一個更新 希望這個系列可以給 Windows Phone 8開發者帶來一些開發上的便利。

升級到WP8必需知道的13個特性 系列文章目錄地址:http://www.linuxidc.com/Linux/2013-08/89003.htm

首先介紹下使用步驟使用Nokia地圖控件和在WP7中使用BingMap十分相似 這裡我選擇了 location 和 Map 原因是我想在地圖上顯示我的本地位置。

另外每一款Nokia地圖應用都需要 在應用中指定你的 ApplicationID 和 AuthenticationToken這兩項需要在DEV Center中獲取

當然在App中是要指定一下的

        private void myMapControl_Loaded(object sender, RoutedEventArgs e)
        {
            Microsoft.Phone.Maps.MapsSettings.ApplicationContext.ApplicationId = "ApplicationID";
            Microsoft.Phone.Maps.MapsSettings.ApplicationContext.AuthenticationToken = "AuthenticationToken";
        }

在我們的頁面中添加一個地圖控件

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <maps:Map x:Name="MyMap"  Center="39.92, 116.46" ZoomLevel="10"/>
        </Grid>
public MainPage()
{
   InitializeComponent();
   Map MyMap = new Map();
   ContentPanel.Children.Add(MyMap);
}

以上兩段代碼基本是等效的,但是細心的同學肯定注意到了 XAML文件中指定兩個屬性值 Center 和 ZoomLeve Center是指地圖所在中心點的經緯度位置,zoomlevel 是用來設置地圖的縮放級別(1-20)縮放級別越高 地圖的分辨率也就對應越高。

public MainPage()
{
   InitializeComponent();
   Map MyMap = new Map();

   //Set the Map center by using Center property
   MyMap.Center = new GeoCoordinate(47.6097, -122.3331);

   //Set the map zoom by using ZoomLevel property
   MyMap.ZoomLevel = 10;
   ContentPanel.Children.Add(MyMap);
}

除了 Center 和 ZoomLevel 還有heading 和 pitch 屬性可以對地圖屬性進行設置

heading 是標志地圖的"指向“ 介於 0 - 360 默認 0 北向上

pitch 是標志地圖的傾斜度 0 - 180

void OnCenterZoom_Click(object sender, EventArgs args)
{
   MyMap.Center = new GeoCoordinate(47.6097, -122.3331);
   MyMap.ZoomLevel = 18;
}

void OnAnimate_Click(object sender, EventArgs args)
{
   MyMap.SetView(new GeoCoordinate(47.6097, -122.3331), 15, MapAnimationKind.Parabolic);
}
Copyright © Linux教程網 All Rights Reserved