Screenshot_20170509-152819.png

前言

最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sdk到项目中来,所以想到了调起对应的地图类app来展示位置信息。当检测到安装了高德或者百度地图的时候,调起相对应的app展示,当没有这些地图app的时候,打开百度地图的网页版来实现地点的展示。

但是在实现调起高德或者百度地图app的时候,并没有找到相对比较的好的资料,最后没有办法,还是必须到高德和百度的官网上面去寻找对应的资料。引用交流群的一句话,“为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在需求上”,所以怎么能在这些事情上浪费时间,这种查资料的事情,我最多只想做这一次,以后再也不想再耽误时间了,所以做了一个简单的集成处理。

其实,如果业务与地图联系稍微深一点的话,开发者都会选择去集成对应的sdk,所以调用地图类app的情况还是相对比较少的,所以在集成的时候,也没有考虑的特别全面。

dependencies { compile 'com.github.MZCretin:ExternalMapUtils:v1.0.0' }

正文

展示某个特定的点

最常见的一种情况,就是展示某个特定的点。这种方式,高德、百度地图和百度地图网页版都支持,所以写了一个方法,具体请看OpenExternalMapAppUtils.java的openMapMarker方法。调用该方法的时候,会首先检测本地有没有安装高德或者百度地图,然后将安装的应用以popwindow的方式展示给用户选择,如果都没有安装,则调起浏览器展示百度地图网页版展示信息。工具类具体调用方式如下:(效果图在最后统一放出)

OpenExternalMapAppUtils.openMapMarker(this, longitude, latitude, name, des, "测试DEMO");

官方说明:

百度调用说明:

百度参数说明

// 调起app自定义打点

i1.setData(Uri.parse("baidumap://map/marker?location=40.057406655722,116.2964407172&title=Marker&content=makeamarker&traffic=on"));

startActivity(i1);

百度地图网页版说明:

百度网页版参数说明

http://api.map.baidu.com/marker?location=40.047669,116.313082&title=我的位置&content=百度奎科大厦&output=html&src=yourComponyName|yourAppName //调起百度PC或web地图,且在(lat:39.916979519873,lng:116.41004950566)坐标点上显示名称"我的位置",内容"百度奎科大厦"的信息窗口。

高德调用说明:

高德参数说明

act=android.intent.action.VIEW

cat=android.intent.category.DEFAULT

dat=androidamap://viewMap?sourceApplication=appname&poiname=abc&lat=36.2&lon=116.1&dev=0

pkg=com.autonavi.minimap

App路径规划(无网页版)

较常见的一种情况,就是展示某个特定的点。这种方式,只支持高德、百度地图,所以写了一个方法,具体请看OpenExternalMapAppUtils.java的openMapDirection方法。调用该方法的时候,会首先检测本地有没有安装高德或者百度地图,然后将安装的应用以popwindow的方式展示给用户选择,如果都没有安装,则提示安装app。工具类具体调用方式如下:(效果图在最后统一放出)

OpenExternalMapAppUtils.openMapDirection(this, split[0], split[1], sName,

split1[0], split1[1], dName, "测试DEMO");

官方说明:

百度地图说明:

百度参数说明

Intent i1 = new Intent();

// 驾车路线规划

i1.setData(Uri.parse("baidumap://map/direction?region=beijing&origin=39.98871,116.43234&destination=name:西直门&mode=driving"));

startActivity(i1);

高德地图说明:

高德地图参数说明

act=android.intent.action.VIEW

cat=android.intent.category.DEFAULT

dat=amapuri://route/plan/?sid=BGVIS1&slat=39.92848272&slon=116.39560823&sname=A&did=BGVIS2&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0

pkg=com.autonavi.minimap

App导航(提供终点经纬度)

较常见的一种情况,就是提供终点坐标,app导航到该地点。这种方式,只支持高德、百度地图,所以写了一个方法,具体请看OpenExternalMapAppUtils.java的openMapNavi方法。调用该方法的时候,会首先检测本地有没有安装高德或者百度地图,然后将安装的应用以popwindow的方式展示给用户选择,如果都没有安装,则提示安装app。工具类具体调用方式如下:(效果图在最后统一放出)

OpenExternalMapAppUtils.openMapNavi(this, longitude, latitude, name, des, "测试DEMO");

官方说明:

百度地图说明:

百度地图参数说明

Intent i1 = new Intent();

// 驾车导航

i1.setData(Uri.parse("baidumap://map/navi?query=故宫"));

startActivity(i1);

高德地图说明:

高德地图参数说明

cat=android.intent.category.DEFAULT

dat=androidamap://navi?sourceApplication=appname&poiname=fangheng&lat=36.547901&lon=104.258354&dev=1&style=2

pkg=com.autonavi.minimap

百度地图网页导航(提供起点终点经纬度)

较常见的一种情况,就是提供起点和终点坐标,网页版版提供导航。这种方式,只网页版百度地图,所以写了一个方法,具体请看OpenExternalMapAppUtils.java的openBrosserNaviMap方法。工具类具体调用方式如下:(效果图在最后统一放出)

OpenExternalMapAppUtils.openBrosserNaviMap(this, split[0], split[1], sName,

split1[0], split1[1], dName, "深圳", "测试DEMO");

官方说明:

百度地图网页版说明:

百度地图网页版参数说明

http://api.map.baidu.com/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving&region=西安&output=html&src=yourCompanyName|yourAppName

//调起百度PC或Web地图,展示"西安市"从(lat:34.264642646862,lng:108.95108518068 )"我家"到"大雁塔"的驾车路线。

效果展示

初始设置页

弹窗选择

高德显示地点Marker

百度显示地点Marker

高德路径规划

百度路径规划

高德导航

百度导航

网页版导航

高德地图 web android,Android 调用第三方地图类App (高德 百度 百度网页版)相关推荐

  1. android app调用第三方地图路线规划导航(百度,高德,腾讯)

    android app调用第三方地图路线规划导航(百度,高德,腾讯) 因为直接使用高德的sdk提供的导航被投诉说不准,所以需要接第三方. 把BAT系的地图都接上了,有兄弟找到其他的地图调用方法告诉下小 ...

  2. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!...

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  3. 调用第三方地图app导航(高德、百度、腾讯)

    当前位置导航到某个地方,还可以设置出发地的经纬度和位置信息,具体看各官网参数设置. 以下代码可以直接使用. /*** Date: 2022-11-23* Author: lanzi* 调用第三方地图a ...

  4. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  5. iOS之Swift实现调用第三方地图应用导航

    iOS之Swift实现调用第三方地图应用导航 开始的一些话 关于坐标系 源码 调用方法 一点注意事项 开始的一些话 作为一个"半路出家"的iOS的程序猿,一直使用OC开发,也想过使 ...

  6. Android如何调用第三方SO库

    问题描述:Android如何调用第三方SO库: 已知条件: SO库为Android版本连接库(*.so文件),并提供了详细的接口说明: 已了解解决方案: 1.将SO文件直接放到libs/armeabi ...

  7. Android跳转至抖音APP个人界面(包括极速版,火山版)

    系列文章目录 Android跳转至抖音APP个人界面(包括极速版,火山版) 文章目录 系列文章目录 前言 一.实现思路 二.判断APP是否存在于Android手机 三.进行跳转至抖音个人界面 举例实现 ...

  8. Android自定义View——实现理财类APP七日年化收益折线图效果

    这段时间的自定义View学习,学会了绘制柱状图.绘制折线图.绘制进度控件,那我们今天就来聊聊另外一种自定义的View,这就是我们常见的七日年化收益折线图效果.先看看长什么样. 这就是效果图了,元素相对 ...

  9. Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航

    因为公司项目需要用到外部导航,找到一些,大兄弟们凑合看...好吧反正也没人看- - 1.调用百度导航 //开启百度导航public void startNavi() {//百度地图,从起点是LatLn ...

最新文章

  1. JavaWeb学习之路——SSM框架之SpringMVC(八)
  2. Android安卓程序消息提示和按钮响应事件
  3. Jquery 三种方法获取取Checkbox是否选中
  4. 必然的宿命,绚然的《暗花》
  5. 3.Contructor(构造器)模式—精读《JavaScript 设计模式》Addy Osmani著
  6. 平板电脑离寿终正寝还有多远?
  7. 作业 校正学生成绩 winform
  8. 如何在Java中将字节数组转换为十六进制字符串?
  9. 菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local
  10. 网管软件如何部署?网管常用软件
  11. 非致命战计算机病毒战属于,《信息化战争》章节
  12. EXCEL,神奇的lookup()函数
  13. 深度Deepin20 安装软件的依赖问题(sudo apt --fix-broken install)
  14. 算法到底该怎么学?算法数据结构Java编程超全干货!(ACM金牌选手分享超牛学习路径~)...
  15. 机器学习之逻辑回归(对数几率回归)
  16. 正则表达式高级技巧背后的关键概念[SM]
  17. 什么是“孤岛效应”? ----防孤岛保护装置
  18. 售票统计表表格模板_销售额统计表(表格模板DOC格式).DOC
  19. python中不同进制的整数之间可以直接运算吗_【python公开课|要想真的做好python,那么学会python整数的不同进制很重要】- 环球网校...
  20. Segmentation fault段错误出现原因分析及解决方法笔记

热门文章

  1. 2021 IEEE编程语言排行榜:Python排名榜首!
  2. 关于累加偶数奇数的c语言程序,C语言程序求1—100之间的奇数和和偶数和
  3. mysql exec函数_mysql exec 存储过程
  4. 一个工具教你制作PPT
  5. python常用库详解,超详细
  6. 使用php实现爬虫程序 套取网站的图片实例
  7. avue实现简单crud
  8. Boson Netsim的使用;路由配置
  9. 怎么用Python批量将ppt转换为pdf
  10. matlab电磁场散度与旋度,梯度、散度和旋度大揭秘