相信大家知道 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); }