Windows Phone 7的地图控件
创始人
2024-07-18 13:40:36
0

在我们详细介绍了Windows Phone 7的枢轴控件和全景视图控件,本文我们将介绍地图控件。现在地理定位服务在移动应用程序中越来越流行,它的这种能告知用户身处何地以及身边有何物的能力变得越来越重要。

使用地图控件

作为Visual Studio 2010工具箱的一部分,你只需要将一个地图控件拖到页面中即可。这样做时,你会注意到在页面中添加了另一个XML名称空间。

  1. xmlns:map="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps" 
  2.  

这是在我的例子中默认添加的XAML(在我调整好位置和尺寸后):

  1.  Height="607" HorizontalAlignment="Left" Name="myMap" VerticalAlignment="Top" Width="456" /> 
  2.  

***,来一张程序中地图的截图:

程序中地图的截图
程序中地图的截图

你会注意到在上图中央的白色文字写着“无效的证书。注册一个开发人员账户”。本文的剩余部分,我会说一下我们能对这个地图控件进行的所有不同的操作,包括获得一个有效地开发人员API密钥。

创建你的开发人员账户

在构建你的地图程序之前首先要做的就是获得一个Bing Map API密钥。这很简单,并且是免费的,并且可以将上面那行丑陋的白字去掉。要得到它,需要前往Bing地图站点并注册。完成后,你需要创建一个API密钥。窗体看起来是这样的:

创建你的开发人员账户
创建你的开发人员账户

当你填好后,他们会给你一个看起来像这样的API密钥:

  1. AsWlUnHEvLgHlLHaRqTZLslewv1QIdGppxOqyL-7He2jxyHvLAjutrcntemUih-w9  
  2.  

(这不是我的API密钥。我替换了很多字符。但它看起来应该像你见到的这样。)

使用Credentials Provider属性

既然你已经有一个API密钥了,我们需要将它插入到我们的程序中。如果你的程序中只有一个地图控件,向下面这样使用就非常好:

  1.  CredentialsProvider="AsWlUnHEvLgHlLHaRqTZLslewv1QIdGppxOqyL-7He2jxyHvLAjutrcntemUih-w9"> 
  2.  

如果你想重用这个值,应该将它保存到别的地方,比如App.xaml文件。像下面这个例子。我提供了你会在App.xaml文件和实际的地图控件中都能用到的代码。我们在App.xaml文件中创建了一个静态的CredentialsProvider,并在我们的页面中访问它。

  1. App.xaml  
  2.  
  3.      ApplicationId="AsWlUnHEvLgHlLHaRqTZLslewv1QIdGppxOqyL-7He2jxyHvLAjutrcntemUih-w9" x:Key="BingMapsAPIKey"> 
  4.  
  5. Map Control  
  6.  CredentialsProvider="{StaticResource BingMapsAPIKey}"> 
  7.  

改变地图控件的特性

有很多选项可以改变地图的外观。例如,将道路模式改为空中模式,或者决定是否显示缩放级别选择器。你有很多很多可以设置的选项,它们都在Bing Maps Silverlight Control Interactive SDK中。我就不必在这里把所有选项都罗列一遍了(他们已经做了很多工作了),但我要告诉你如何从地图中获取你的数据。重点只讲两件事:在地图中添加图钉和自定义的形状。

在地图中添加图钉

在C#中,添加一个图钉就是创建一个Pushpin对象,设置它的位置,然后将它添加到地图中。在XAML中也可以实现。很明显,XAML为你提供了更快捷的方式,但其实哪种方式都不复杂。

  1. XAML  
  2.  Location="40.1449, -82.9754" FontSize="30" Background="Orange" Content="1" /> 
  3. C#  
  4. Pushpin pushpin = new Pushpin();  
  5. Location location = new Location();  
  6. location.Latitude = 40.1449;  
  7. location.Longitude = -82.9754;  
  8. pushpin.Location = location;  
  9. pushpin.Background = new SolidColorBrush(Colors.Orange);  
  10. pushpin.Content = "1";  
  11. pushpin.FontSize = 30;  
  12. MapControl.Children.Add(pushpin);  
  13.  

在上面的例子中,无论哪种方式,都会将一个图钉钉到我的办公室,在8800 Lyra Drive, Columbus可以找到。在我的程序中看起来是这样的:

Windows Phone 7的地图控件
Windows Phone 7的地图控件

如果你想知道如何将你的地址转换为经纬度,请参见我的这篇Silverlight 31日谈系列中的文章。它包含了地理地址编码以及你要在手机程序中所做的内容。

在地图中添加自定义XAML

在Map程序集中有一个小控件叫MapPolygon。向它提供一系列位置,它就会在你的地图中画出一个自定义的多边形,当用户缩放和移动地图时它仍会固定在那个位置。由于它是基于经纬度而绑定到地图的,所以程序中有需要,可以很容易地用它勾勒出国家,州,地区,甚至一个停车场的轮廓。下面是实现方法:

  1. XAML  
  2.  Fill="Purple" Stroke="White" Opacity=".7" Locations="40.1449,-82.9754 40.1449,-12.9754 10.1449,-82.9754" /> 
  3. C#  
  4. MapPolygon mapPolygon = new MapPolygon();  
  5. mapPolygon.Fill = new SolidColorBrush(Colors.Purple);  
  6. mapPolygon.Stroke = new SolidColorBrush(Colors.White);  
  7. mapPolygon.Opacity = .7;  
  8. LocationCollection locations = new LocationCollection();  
  9. Location location = new Location();  
  10. location.Latitude = 40.1449;  
  11. location.Longitude = -82.9754;  
  12. Location location1 = new Location();  
  13. location1.Latitude = 40.1449;  
  14. location1.Longitude = -12.9754;  
  15. Location location2 = new Location();  
  16. location1.Latitude = 10.1449;  
  17. location1.Longitude = -82.9754;  
  18. locations.Add(location);  
  19. locations.Add(location1);  
  20. locations.Add(location2);  
  21. mapPolygon.Locations = locations;  
  22.  
  23. MapControl.Children.Add(mapPolygon);  
  24.  

就是这些。我们已经将一个图钉和一个自定义多边形覆盖到了地图中。关于这个控件的更多功能请参见Bing Maps Silverlight Control Interactive SDK(下面是MapPolygon的截图)

Windows Phone 7的地图控件
Windows Phone 7的地图控件

在这个例子中,你可以找到用XAML和C#将图钉和多边形添加到地图中的例子。可能你不需要全部内容,可以取其一,这完全由你决定。

【编辑推荐】

  1. Windows Phone 7的枢轴控件
  2. Windows Phone 7的全景视图控件
  3. 使用独立存储开发Windows Phone 7应用程序
  4. Windows Phone 7开发工具UI设计新特性
  5. Windows Phone 7 UI设计初学者入门

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...