实现百度地图和高德地图导航(方式)

如图:根据第三方地图来实现不同的出行方式

第一步:首先判断手机是否安装第三方导航应用如百度地图或者是高德地图 - 没有安装则提示安装应用

 /*** 通过包名获取应用信息* @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 百度地图高德地图开发相关推荐

  1. android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1

    一.简介: 在百度.高德地图开发中,申请key的时候,要两个版本的sha1值.一个是开发版(debug),一个是发布版(release). debug版本的sha1比较好获取,网上资料一堆,这里引用一 ...

  2. android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换

    android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换 前言: 由于项目需要,很多时候都需要地图经纬度直接的转换 ...

  3. Android中集成高德地图SDK实现地图定位和导航功能(一)

    一.前期准备工作 1.在高德地图开发者平创建一个自己的项目 名称和应用类型随便填 2.添加Key 1.添加key 2.获取SHA1值 2.1.使用windwos+R 输入cmd 打开控制窗口 输入 w ...

  4. ios html调起高德地图,iOS 调用百度地图, 高德地图,苹果自带的地图

    在你项目的info.plist添加 LSApplicationQueriesSchemes 为KEY 类型为NSArray;添加对应的白名单 高德:iosamap百度:baidumap - (void ...

  5. 如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似)

    如何用GGGIS地图下载器下载谷歌无偏移影像和天地图标注(百度和高德地图类似) 软件:GGGIS地图下载器 第一步:选择登录注册 第二步骤:注册一个自己专属的账号 第三步:登录即可(第一次登录会比较慢 ...

  6. Android中集成高德地图SDK实现地图定位和导航功能(二)

    我们接着上一篇文章开始继续实现android中集成高德地图的SDK实现地图 定位,搜索,导航的功能 如何让地图在手机上实现呢? 1.配置AndroidManifest 中的权限申请 可以参考官方文档 ...

  7. Cesium加载无偏移百度、高德地图

    前言 使用cesium加载地图服务时,cesium默认的地理坐标系是WGS84坐标,一般添加天地图的地图服务时不会发生地图偏移的情况(其实也有,但是可以忽略不计),直接加载就可以,但在添加百度.高德地 ...

  8. Android学习之高德地图的通用功能开发步骤(二)

    周一又来了,我就接着上次的开发步骤(一)来吧,继续把高德地图的相关简单功能分享一下 上次写到了第六步,接着写第七步吧. 第七步:定位 + 地图选点 + 路径规划 + 实时导航 以下是我的这个功能Nav ...

  9. 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现

    最近闲的没事干,发现滴滴出行的app,地图上的小汽车可以跑,很炫是不是,我们公司也是做车辆监控的app的,我就一直揣摩着怎么也让我们的小汽车在地图上跑来跑去啊,这样给人感觉好点,废话不说了,先看下滴滴 ...

最新文章

  1. [转] 利用jemalloc分析内存泄漏
  2. CentOS7.6离线安装JDK1.8
  3. ffmpeg硬解码视频文件播放器
  4. eventbus使用_Android EventBus框架的使用介绍
  5. [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
  6. python绘制饼图双层_如何在python中绘制双变量数据的饼图?
  7. linux日志报multipath,linux device mapper multipath 驱动的路径聚合
  8. 差分硬盘的merge(合并差异)实验分析
  9. 【百度地图API】情人节求爱大作战——添加标注功能
  10. JavaCV入门教程
  11. ps怎么更改背景图层大小_ps怎么修改图层大小
  12. Mac 移动硬盘没有推出,再插上不显示移动硬盘解决办法
  13. python 追加写文件_python怎么追加写入文件
  14. 清明节微信公众号图文排版有哪些经典素材?
  15. 一个 npm 包的坎坷“续命”之生
  16. mulesoft MCIA 破釜沉舟备考 2023.02.10.01
  17. IDC评述网:11月份海外域名主机服务商TOP10
  18. 不同进制之间的转换的各种方法
  19. P2P网络编程-3-案例实践:PubSub
  20. 哪个linux系统最安全,Linux系统是不是最安全的系统?

热门文章

  1. location.href用法
  2. Ubuntu Core 18 发布:提供 10 年安全更新;美劳工部指控甲骨文薪酬歧视
  3. 【视频图片生成素描并重新合成】
  4. 刘一男词汇课(从ancestor到universa):书上有路勤为径,学海无涯“懂“作舟
  5. PCM / I2S / AC97简介
  6. 直播电商软件开发,简单的单例模式
  7. TIPTOP ERP 快捷键使用及其实现原理
  8. Swiftui:自定义Tabbar
  9. qpython3l如何使用_qpython3l怎么用
  10. Android 四大组件,五大存储,六大布局