WP8中的地图和导航
2014-02-28 14:40
309 查看
原文 WP8中的地图和导航
代码示例
源文件: Media:MapSample.zip
测试基于
SDK: Windows Phone SDK 8.0
兼容于
平台: Windows Phone 8 and later
Windows Phone 8
文章
由 Xinx Gong 在 30 Nov 2012 创建
最后由 hamishwillee 在 26 Jun 2013 编辑
1.Map控件和服务使用的namespace
2.XAML文件中使用Map控件需要的xmlns声明
3.WMAppManifest.xml中需要添加ID_CAP_MAP功能
通过SetView方法可以调整以下属性:
代码示例
源文件: Media:MapSample.zip
测试基于
SDK: Windows Phone SDK 8.0
兼容于
平台: Windows Phone 8 and later
Windows Phone 8
文章
由 Xinx Gong 在 30 Nov 2012 创建
最后由 hamishwillee 在 26 Jun 2013 编辑
Contents1 地图控件1.1 显示地图 1.2 指定地图的中心点和缩放比 1.3 用Map.SetView动态的调整地图 1.4 地图制图模式 1.5 地图颜色模式 1.6 显示地标和行人特性 2 地图服务 2.1 通过经纬度查找地址信息 2.2 查找某一地点的经纬度 2.3 路线规划 3 离线地图管理 4 示例代码下载 |
地图控件
WP8中,可以使用新的Map APIs来开发基于地图的应用,并可以包含位置以及搜索功能。WP8中使用的是诺基亚地图,WP7.1中的Bing地图仍然支持,但是不推荐使用,它仅仅是为了兼容使用了已经Bing地图的WP7.1应用。显示地图
WP8中使用Map控件来显示地图,使用之前你需要关注下面几件事:1.Map控件和服务使用的namespace
Microsoft.Phone.Map
2.XAML文件中使用Map控件需要的xmlns声明
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
3.WMAppManifest.xml中需要添加ID_CAP_MAP功能
指定地图的中心点和缩放比
在初始化Map控件时,CenterChanged和ZoomLevelChanged事件会被触发一次,所以要确定你的代码在初始化Map控件初始化触发这两个事件时能正确的处理好。 注意不要用Latitude和Longitude属性来设置Center,需要创建GeoCoordinate对象来设置。用Map.SetView动态的调整地图
如果直接通过设置Map的属性来调整地图,地图的变化非常生硬,而采用SetView来调整地图的话,会有一个很流畅的动画效果来展示地图的变化。通过SetView方法可以调整以下属性:
GeoCoordinate center:地图显示的中心点 double zoomLevel:地图显示的缩放级别 double heading:地图旋转的角度,值在0-360之间。double pitch:地图倾斜的角度,值在0-180之间。
LocationRectangle boundingRectangle:地图上由两个经纬度坐标标识的一个矩形区域。 MapAnimationKind animationKind:地图发生变化时的过度动画效果。
地图制图模式
MapCartographicMode.Road: 显示普通的2D地图(默认显示)。 MapCartographicMode.Aerial: 显示航空摄影的地图。 MapCartographicMode.Hybrid: 显示带有道路和标签的鸟瞰地图。 MapCartographicMode.Terrain: 显示物理3D地图,带有海拔和水的特性,比如山脉和河流。![]()
地图颜色模式
MapColorMode.Light:白天模式 MapColorMode.Dark:夜间模式![]()
显示地标和行人特性
地标:设置Map控件的LandmarksEnabled属性为true。 只有在Map控件的ZoomLevel大于7时才能显示。 行人特性:设置Map控件的PedestrianFeaturesEnabled属性为true。 只有在Map控件的ZoomLevel大于16时才能显示。![]()
地图服务
通过经纬度查找地址信息
ReverseGeocodeQueryReverseGeocodeQuery reverseGeocodeQuery = null; if (reverseGeocodeQuery == null || !reverseGeocodeQuery.IsBusy) { reverseGeocodeQuery = new ReverseGeocodeQuery(); reverseGeocodeQuery.GeoCoordinate = new GeoCoordinate(39.92, 116.46); reverseGeocodeQuery.QueryCompleted += reverseGeocodeQuery_QueryCompleted; reverseGeocodeQuery.QueryAsync(); } private void reverseGeocodeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e) { if (e.Error == null) { ... } }
查找某一地点的经纬度
GeocodeQueryGeocodeQuery geocodeQuery = new GeocodeQuery(); geocodeQuery.SearchTerm = searchTerm; // Can search with a nearby coordinate, or ignore the parameter. geocodeQuery.GeoCoordinate = nearbyCoordinate == null ? new GeoCoordinate(0, 0) : nearbyCoordinate; geocodeQuery.QueryCompleted += geocodeQuery_QueryCompleted; geocodeQuery.QueryAsync(); private void geocodeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e) { if (e.Error == null) { ... } }
路线规划
RouteQueryRouteQuery routeQuery = new RouteQuery(); // TravelMode: Driving or Walking. routeQuery.TravelMode = TravelMode.Driving; // List<GeoCoordinate>: List of geocoordinates representing the route. routeQuery.Waypoints = route; routeQuery.QueryCompleted += routeQuery_QueryCompleted; routeQuery.QueryAsync(); private void routeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<Route> e) { if (e.Error == null) { ... } }
离线地图管理
MapDownloaderTask task = new MapDownloaderTask(); task.Show();
示例代码下载
File:MapSample.zip相关文章推荐
- SAM4E单片机之旅——21、DMAC之USART回显
- PHP5.5新特性
- tips
- 硬盘属于外部存储器
- Proguardgui
- 上楼梯问题
- sqlserver的bcp命令特殊符号转义
- 浙大 pat Basic Level 1018
- 电源主板CPU内存
- This is the first archive!
- KVC
- 21275:切蛋糕
- C# 实现自定义类型的A[key]取值
- ReRes 改变页面请求响应的内容(前端神器)
- SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝
- 计算机是由硬件系统
- 大规模集成电路机
- 什么是WPF?
- 红孩儿的游戏编程之路 工具箱用了一下,软件质量算不上好。
- C D S UeLog 处理RNTI,ENBID,CELLID的方法