Android 开发中的代码片段(3)地图操作相关
前言
收集常用的代码块,留存记录。此次代码块包含:唤起高德地图导航、唤起百度地图导航
代码
判断手机内安装的地图
/**判断是否安装目标应用*/ private boolean isInstallByread(String packageName) { return new File("/data/data/" + packageName) .exists(); } /** * 判断和打开地图 */ public void navigationMap() { //1.两个地图都安装了,让用户选择 boolean installBaidu = isInstallByread("com.baidu.BaiduMap"); boolean installAmap = isInstallByread("com.autonavi.minimap"); if (installBaidu && installAmap) {//两个地图都安装了 让用户进行选择 showSelectMap(); } else if (installBaidu) {//安装了百度地图 startBaiduMap(); } else if (installAmap) {//安装了高德地图 startAmapMap(); } else {//两个地图都没安装,使用web Api进行导航,不建议实现 //startWebMap(); T.showToast(mActivity, "您的手机未安装高德地图或者百度地图"); } }
唤起高德地图导航(驾车)
/** * 唤起高德地图 */ private void startAmapMap() { try { Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse("androidamap://route?sourceApplication=导航demo" + "&dlat=" + mEndLat + "&dlon=" + mEndLng + "&dname=" + name + "&dev=0&t=2")); intent.setPackage("com.autonavi.minimap"); mActivity.startActivity(intent); } catch (Exception e) { T.showToast(mActivity, "调起高德地图失败"); } }
相关参数:
参数 | 说明 | 是否必填 |
---|---|---|
sourceApplication | 当前app的名字 | |
dlat | 纬度 | |
dlon | 经度 | |
name | 终点的名称 | |
dev | 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密) | |
t | 导航方式: 0 速度快 1 费用少 2 路程短; 3 不走高速 4 躲避拥堵 5 不走高速且避免收费 6 不走高速且躲避拥堵 7 躲避收费和拥堵 8 不走高速躲避收费和拥堵 |
效果如下:
唤起百度地图导航(驾车)
/** * 移动APP调起Android百度地图方式 */ private void startBaiduMap() { try { Intent intent = new Intent(); intent.setData(Uri.parse("baidumap://map/direction?destination=name:" + name + "|" + "latlng:" + mEndLat + "," + mEndLng + "&mode=driving&car_type=TIME")); mActivity.startActivity(intent); // 启动调用 } catch (Exception e) { T.showToast(mActivity, "调起百度地图失败"); } }
相关参数:
参数 | 说明 |
---|---|
destination | 目的地名称 |
latlng | 纬度,进度 拼接字符串 |
mode | 导航模式: transit(公交) driving(驾车) walking(步行) riding(骑行) |
car_type | 驾车路线规划类型: BLK:躲避拥堵(自驾) TIME:高速优先(自驾) DIS:不走高速(自驾) FEE:少收费(自驾) DEFAULT: 默认偏好; 默认使用地图中已保存的路线偏好(缺省值)。 |
除缺省值外,若用户已勾选车牌限行,其他类型都会默认增加车牌限行的偏好。
最后
本文只写了驾车相关的导航实例,剩余的公交、步行、骑行可参考官方文档。
官方文档:
未完待续、后续补充!
我的博客地址
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
我要做 Android 之消息机制
Android的消息机制指的是Handler的运行机制,本篇将总结Handler机制的相关知识点: 消息机制概述 消息机制分析 1.消息机制概述 a.作用:跨线程通信。 b.常用场景:当子线程中进行耗时操作后需要更新UI时,通过Handler将有关UI的操作切换到主线程中执行。 系统不建议在子线程访问UI的原因:UI控件非线程安全,在多线程中并发访问可能会导致UI控件处于不可预期的状态。而不对UI控件的访问加上锁机制的原因有: 上锁会让UI控件变得复杂和低效 上锁后会阻塞某些进程的执行 c.四要素: Message(消息):需要被传递的消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,最终由Handler处理。 MessageQueue(消息队列):用来存放Handler发送过来的消息,内部通过单链表的数据结构来维护消息列表,等待Looper的抽取。 Handler(处理者) :负责Message的发送及处理。 Handler.sendMessage():向消息池发送各种消息事件。 Handler.handleMessage() :处理相应的消...
- 下一篇
Material Design 实战 之第一弹——Toolbar详解
本模块共有六篇文章,参考郭神的《第一行代码》,对Material Design的学习做一个详细的笔记,大家可以一起交流一下: Material Design 实战 之第一弹——Toolbar(即本文) Material Design 实战 之第二弹——滑动菜单详解&实战 Material Design 实战 之第三弹—— 悬浮按钮和可交互提示(FloatingActionButton & Snackbar & CoordinatorLayout) Material Design 实战 之第四弹 —— 卡片布局以及灵动的标题栏(CardView & AppBarLayout) Material Design 实战 之第五弹 —— 下拉刷新(SwipeRefreshLayout) Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间) 写在文首,什么是Material Design?这里参考一下郭神的说法: 文章提要与总结 1. 关于...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器