android 百度地图高德地图开发
实现百度地图和高德地图导航(方式)
如图:根据第三方地图来实现不同的出行方式
第一步:首先判断手机是否安装第三方导航应用如百度地图或者是高德地图 - 没有安装则提示安装应用
/*** 通过包名获取应用信息* @param context* @param packageName* @return*/public static AppInfo getAppInfoByPak(Context context, String packageName) {PackageManager packageManager = context.getPackageManager();List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);for (PackageInfo packageInfo : packageInfos) {if (packageName.equals(packageInfo.packageName)) {AppInfo tmpInfo = new AppInfo();tmpInfo.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());tmpInfo.setPackageName(packageInfo.packageName);tmpInfo.setVersionName(packageInfo.versionName);tmpInfo.setVersionCode(packageInfo.versionCode);tmpInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));return tmpInfo;}}return null;}
第二步:注意首先这里是直接设置终点名称直接导航
/*** 百度地图 - 直接设置终点 - 这里的type就是选择出行的方式列如:步行,公交等*/public void startNative_Baidu1(String address, String type) {try {if ("1".equals(isMuBiaoClick)){Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination="+address+"&mode="+type+"&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");startActivity(intent);}else if ("2".equals(isMuBiaoClick)){Intent intent = new Intent();intent.setData(Uri.parse("baidumap://map/geocoder?src=openApiDemo&address="+address));startActivity(intent);}} catch (Exception e) {e.printStackTrace();Toast.makeText(TakeMeActivity.this, "地址解析错误", Toast.LENGTH_SHORT).show();}}
/*** 高德地图*/public void startNative_Gaode1(String address) {try {if ("1".equals(isMuBiaoClick)){Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dname="+address+"&dev=0&m=0&t=1");intent.setPackage("com.autonavi.minimap");startActivity(intent);}else if ("2".equals(isMuBiaoClick)){Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname="+address+"&dev=0&m=0&t=1");intent.setPackage("com.autonavi.minimap");startActivity(intent);}} catch (Exception e) {e.printStackTrace();Toast.makeText(TakeMeActivity.this, "地址解析错误", Toast.LENGTH_SHORT).show();}}
ok,核心代码已经贴出,这两个方法主要就是目标位置直接进行传递(String),再由我的当前位置做为起点进行导航。
总结:这几个方面其实相对来说都比较简单,相信你肯定知道,关键点其实在于在跳转第三方应用的时候intent传递的数据怎么去写? 下面就来为大家介绍一下:
1.首先,你要知道一点知识
1.1: 导航一定有起点和终点,一般起点和终点有两种形式:
1.2:坐标一般常见的有三种火星坐标、百度坐标、高德坐标
1.3: 通过百度定位或者通过名字反编码出来的坐标都是百度坐标
1.4:导航参数中如果有坐标,坐标的优先级大于名字
2.测试大致的可分为6种
1.起点终点都是坐标使用高德
2.起点终点都是名称使用高德
3.当前位置到终点使用高德
4.起点终点都是坐标使用百度
5.起点终点都是名称使用百度
6.当前位置到终点使用百度
高德
private static final double LATITUDE_A = 28.1903; //起点纬度private static final double LONGTITUDE_A = 113.031738; //起点经度private static final double LATITUDE_B = 28.187519; //终点纬度private static final double LONGTITUDE_B = 113.029713; //终点经度
高德1起点和终点的坐标如下
/*** 确定起终点坐标BY高德*/void setUpGaodeAppByLoca(){try {Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&slat="+LATITUDE_A+"&slon="+LONGTITUDE_A+"&sname="+"万家丽国际Mall"+"&dlat="+LATITUDE_B+"&dlon="+LONGTITUDE_B+"&dname="+"东郡华城广场|A座"+"&dev=0&m=0&t=1");if(isInstallByread("com.autonavi.minimap")){startActivity(intent);Log.e(TAG, "高德地图客户端已经安装") ;}else {Log.e(TAG, "没有安装高德地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
高德2起点终点都是名称
/*** 确认起终点名称BY高德*/void setUpGaodeAppByName(){try {Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname"+"&sname="+"万家丽国际Mall"+"&dname="+"东郡华城广场|A座"+"&dev=0&m=0&t=1");if(isInstallByread("com.autonavi.minimap")){startActivity(intent);Log.e(TAG, "高德地图客户端已经安装") ;}else {Log.e(TAG, "没有安装高德地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
高德3第三个情况实际上是最好用的方法,如下
/*** 我的位置BY高德*/void setUpGaodeAppByMine(){try {Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dlat="+LATITUDE_B+"&dlon="+LONGTITUDE_B+"&dname="+"东郡华城广场|A座"+"&dev=0&m=0&t=1");if(isInstallByread("com.autonavi.minimap")){startActivity(intent);Log.e(TAG, "高德地图客户端已经安装") ;}else {Log.e(TAG, "没有安装高德地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
下面的是调用百度地图app,同样通过百度拾取 取了两个位置的百度坐标
private static final double LATITUDE_QIDIAN = 28.196744; //起点纬度private static final double LONGTITUDE_QIDIAN = 113.037904; //起点经度private static final double LATITUDE_ZHONGDIAN = 28.193159; //终点纬度private static final double LONGTITUDE_ZHONGDIAN = 113.036427; //终点经度
百度1使用起点和终点的坐标
/*** 注意下面的起终点坐标都是百度坐标,如果使用高德坐标系有很大的误差*/void setUpBaiduAPPByLoca(){try {Intent intent = Intent.getIntent("intent://map/direction?origin=latlng:"+LATITUDE_QIDIAN+","+LONGTITUDE_QIDIAN+"|name:万家丽国际Mall&destination=latlng:"+LATITUDE_ZHONGDIAN+","+LONGTITUDE_ZHONGDIAN+"|name:东郡华城广场|A座&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");if(isInstallByread("com.baidu.BaiduMap")){startActivity(intent);Log.e(TAG, "百度地图客户端已经安装") ;}else {Log.e(TAG, "没有安装百度地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
百度2起点和终点两个名称
/*** 通过起终点名字使用百度地图*/void setUpBaiduAPPByName(){try {Intent intent = Intent.getIntent("intent://map/direction?origin=万家丽国际Mall&destination=东郡华城广场|A座&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");if(isInstallByread("com.baidu.BaiduMap")){startActivity(intent);Log.e(TAG, "百度地图客户端已经安装") ;}else {Log.e(TAG, "没有安装百度地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
百度3当前位置到终点导航规划路线
/*** 我的位置到终点通过百度地图*/void setUpBaiduAPPByMine(){try {Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination=东郡华城广场|A座&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");if(isInstallByread("com.baidu.BaiduMap")){startActivity(intent);Log.e(TAG, "百度地图客户端已经安装") ;}else {Log.e(TAG, "没有安装百度地图客户端") ;}} catch (URISyntaxException e) {e.printStackTrace();}}
总结:ok,这里相信你对intent里面的数据传递会有更好的理解。
android 百度地图高德地图开发相关推荐
- android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1
一.简介: 在百度.高德地图开发中,申请key的时候,要两个版本的sha1值.一个是开发版(debug),一个是发布版(release). debug版本的sha1比较好获取,网上资料一堆,这里引用一 ...
- android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换
android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换 前言: 由于项目需要,很多时候都需要地图经纬度直接的转换 ...
- Android中集成高德地图SDK实现地图定位和导航功能(一)
一.前期准备工作 1.在高德地图开发者平创建一个自己的项目 名称和应用类型随便填 2.添加Key 1.添加key 2.获取SHA1值 2.1.使用windwos+R 输入cmd 打开控制窗口 输入 w ...
- ios html调起高德地图,iOS 调用百度地图, 高德地图,苹果自带的地图
在你项目的info.plist添加 LSApplicationQueriesSchemes 为KEY 类型为NSArray;添加对应的白名单 高德:iosamap百度:baidumap - (void ...
- 如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似)
如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似) 软件:GGGIS地图下载器 第一步:选择登录注册 第二步骤:注册一个自己专属的账号 第三步:登录即可(第一次登录会比较慢 ...
- Android中集成高德地图SDK实现地图定位和导航功能(二)
我们接着上一篇文章开始继续实现android中集成高德地图的SDK实现地图 定位,搜索,导航的功能 如何让地图在手机上实现呢? 1.配置AndroidManifest 中的权限申请 可以参考官方文档 ...
- Cesium加载无偏移百度、高德地图
前言 使用cesium加载地图服务时,cesium默认的地理坐标系是WGS84坐标,一般添加天地图的地图服务时不会发生地图偏移的情况(其实也有,但是可以忽略不计),直接加载就可以,但在添加百度.高德地 ...
- Android学习之高德地图的通用功能开发步骤(二)
周一又来了,我就接着上次的开发步骤(一)来吧,继续把高德地图的相关简单功能分享一下 上次写到了第六步,接着写第七步吧. 第七步:定位 + 地图选点 + 路径规划 + 实时导航 以下是我的这个功能Nav ...
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
最近闲的没事干,发现滴滴出行的app,地图上的小汽车可以跑,很炫是不是,我们公司也是做车辆监控的app的,我就一直揣摩着怎么也让我们的小汽车在地图上跑来跑去啊,这样给人感觉好点,废话不说了,先看下滴滴 ...
最新文章
- [转] 利用jemalloc分析内存泄漏
- CentOS7.6离线安装JDK1.8
- ffmpeg硬解码视频文件播放器
- eventbus使用_Android EventBus框架的使用介绍
- [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
- python绘制饼图双层_如何在python中绘制双变量数据的饼图?
- linux日志报multipath,linux device mapper multipath 驱动的路径聚合
- 差分硬盘的merge(合并差异)实验分析
- 【百度地图API】情人节求爱大作战——添加标注功能
- JavaCV入门教程
- ps怎么更改背景图层大小_ps怎么修改图层大小
- Mac 移动硬盘没有推出,再插上不显示移动硬盘解决办法
- python 追加写文件_python怎么追加写入文件
- 清明节微信公众号图文排版有哪些经典素材?
- 一个 npm 包的坎坷“续命”之生
- mulesoft MCIA 破釜沉舟备考 2023.02.10.01
- IDC评述网:11月份海外域名主机服务商TOP10
- 不同进制之间的转换的各种方法
- P2P网络编程-3-案例实践:PubSub
- 哪个linux系统最安全,Linux系统是不是最安全的系统?
热门文章
- location.href用法
- Ubuntu Core 18 发布:提供 10 年安全更新;美劳工部指控甲骨文薪酬歧视
- 【视频图片生成素描并重新合成】
- 刘一男词汇课(从ancestor到universa):书上有路勤为径,学海无涯“懂“作舟
- PCM / I2S / AC97简介
- 直播电商软件开发,简单的单例模式
- TIPTOP ERP 快捷键使用及其实现原理
- Swiftui:自定义Tabbar
- qpython3l如何使用_qpython3l怎么用
- Android 四大组件,五大存储,六大布局