WP8中的地图和导航
原文 WP8中的地图和导航
测试基于
兼容于
Windows Phone 8
文章
Contents |
地图控件
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时才能显示。
![]()
地图服务
通过经纬度查找地址信息
ReverseGeocodeQuery
ReverseGeocodeQuery 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)
{
...
}
}
查找某一地点的经纬度
GeocodeQuery
GeocodeQuery 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)
{
...
}
}
路线规划
RouteQuery
RouteQuery 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();
示例代码下载
WP8中的地图和导航的更多相关文章
- Android中Google地图路径导航,使用mapfragment地图上画出线路(google map api v2)详解
在这篇里我们只聊怎么在android中google map api v2地图上画出路径导航,用mapfragment而不是mapview,至于怎么去申请key,manifest.xml中加入的权限,系 ...
- WP8关于对地图开发的改进
原文:WP8关于对地图开发的改进 微软在2012年6月21日 发布了 Windows Phone 8的更新.带来大量的功能更新和全新的SDK.作为重头戏的部分是引入了 C++ 和 DirectX,支持 ...
- iOS开发----地图与导航--定位和位置信息获取
要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...
- 用手机地图GPS导航费流量吗?
如果你的手机带有GPS芯片,那么使用手机导航是不会耗费手机流量的.但是如果你的手机没有GPS芯片,而使用的导航软件又是类似于移动提供的导航服务那样的导航功能,那就耗费手机流量了. 目前,导航软件导航主 ...
- wp8.1 Study1: 页面导航&页面间值传递
摘要:wp8.1与wp8中很多API是不一样了,wp8.1把以前wp7.x时的api去掉了,更多与win8.1的API相似.比如以下的页面导航和页面之间的值传递 1.页面导航 利用Frame.Navi ...
- iOS中的地图和定位
文章摘自http://www.cnblogs.com/kenshincui/p/4125570.html#location 如有侵权,请联系删除. 概览 现在很多社交.电商.团购应用都引入了地图和定 ...
- Android百度地图SDK 导航初始化和地图初始化引起的冲突
如题,相同是百度地图SDK开发过程中遇到的一个问题.交代下背景: 开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示.POI搜索,行 ...
- IOS百度地图语音导航
VoiceNavigationViewController.m * 客户端需安装百度导航地图 #import "VoiceNavigationViewController.h" # ...
- EChart中使用地图方式总结(转载)
EChart中使用地图方式总结 2018年02月06日 22:18:57 来源:https://blog.csdn.net/shaxiaozilove/article/details/79274772 ...
随机推荐
- EXT2/EXT3文件系统(一)
整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 1.文件系统概念引入 文件系统是一种存储和组织计算机数据的方法,它使 ...
- Centos系统各种日志存详解
Centos系统各种日志存储路径和详细介绍 Linux常见的日志文件详述如下 1./var/log/boot.log(自检过程) 2./var/log/cron (crontab守护进程crond所派 ...
- 《Linux命令行与shell脚本编程大全》 第十八章 学习笔记
第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定 ...
- cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题
============================================================ 博文原创,转载请声明出处 电子咖啡-专注于移动互联网 ============ ...
- AngularJS 学习笔记值post传值
问题直接调用$http.post()方法时 传值格式是这样的 php接收端接收到的是json格式的,怎么做的跟Ajax post那样传值呢? 分析原因,angular的$http.post()方法默认 ...
- 王立平--android中的anim(动画)
简单有用步骤: 1.新建anim目录. 2.在anim下新建xml文件, 3.在xml下编写自己须要动画. 简单样例: 给Imageview加入动画 public class MainActivity ...
- Swift - 带结果列表的搜索条(UISearchDisplayController)的用法
(注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISea ...
- DLNA_百度百科
DLNA_百度百科 DLNA
- ACM-最小生成树之畅通project——hdu1863
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- Spire.XLS for .NET 測评
有一位朋友推荐了我 Spire.Office (官网:http://www.e-iceblue.com/) -- 基于.NET的办公软件库,说不错. 究竟怎样呢?仅仅有亲測一下才干知道了. ...

