Android 调用第三方地图类App (高德 百度 百度网页版)

原创 2017年05月10日 10:34:39

Screenshot_20170509-152819.png

前言


       最近项目中需要用到地图的功能,但是应用本身不是地图类应用,而且用地图只是为了分享和展示一个地点而已,所以完全没有必要去集成厚重的sdk到项目中来,所以想到了调起对应的地图类app来展示位置信息。当检测到安装了高德或者百度地图的时候,调起相对应的app展示,当没有这些地图app的时候,打开百度地图的网页版来实现地点的展示。
       但是在实现调起高德或者百度地图app的时候,并没有找到相对比较的好的资料,最后没有办法,还是必须到高德和百度的官网上面去寻找对应的资料。引用交流群的一句话,“为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在需求上”,所以怎么能在这些事情上浪费时间,这种查资料的事情,我最多只想做这一次,以后再也不想再耽误时间了,所以做了一个简单的集成处理。
       其实,如果业务与地图联系稍微深一点的话,开发者都会选择去集成对应的sdk,所以调用地图类app的情况还是相对比较少的,所以在集成的时候,也没有考虑的特别全面。

       高德调起app传送门:http://lbs.amap.com/api/amap-mobile/summary/
       百度调起app传送门:http://lbsyun.baidu.com/index.php?title=uri/api/android
       百度网页版传送门:http://lbsyun.baidu.com/index.php?title=uri/api/web
       Github:https://github.com/MZCretin/ExternalMapUtils
       添加依赖:

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

高德路径规划

百度路径规划

高德导航

百度导航

网页版导航


欢迎交流
github地址:https://github.com/MZCretin/AutoUpdateProject

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android之调用高德地图或百度地图原生app

今天做一个路径规划的功能,需要使用到高德地图,或是百度地图,然后想着怎样的实现比较好。刚好也在看前程无忧,它里面就是点击导航的话会先检查本机是否安装了这些地图app,如果有的话,就直接打开使用,没有的...

百度地图(BaiduMap)定位工具类封装和使用

(转载请注明出处哦)本篇博客主要是提供思路,具体的百度地图权限和apikey配置不叙述,地图定位工具类如下 /**  * @ClassName: LocationHelper  * @autho...

如何输入版权符号 copyright

如何输入版权符号 copyright关键字: 输入 版权 符号 copyright unicode /u00a9 Unicode Character 'COPYRIGHT SIGN' (U+00A9)...

Android-----代码实现打开手机第三方应用APP

最近做一个项目,有一个需要启动第三方应用,和微信的地图查看差不多,需要启动高德,百度或腾讯地图来查看;特来分享,希望有所帮助。   案例效果如图:         要想启动第三方;首先要知道他的包名...

android APP调起地图导航(谷歌,高德,百度)工具类

package com.seatel.recommend.tools; import android.content.Context; import android.content.Intent; ...

调用第三方地图导航,高德、百度、谷歌,无需引用sdk

先判断是否存在地图,存在就可以进入导航,没有的话就默认进入市场下载app,代码如下: i1.setOnClickListener(new View.OnClickListener() { ...

android开发游记:APP内部调启百度、高德、web地图导航

一些地图相关的app一般都需要集成导航的功能方便用户使用,但实际上我们很多时候仅仅只是希望提供这样一个贴心的功能把用户送到目的地,而并不会在导航过程中进行自己的业务的处理,这样把导航的功能完全独立出来...

andorid 从APP里面跳转到高德百度地图APP导航

/** * 开发 > URI API > Android * 跳转到百度地图 * * @param context * @param loc1 ...
  • lyf_530
  • lyf_530
  • 2017年02月03日 13:34
  • 2282
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 调用第三方地图类App (高德 百度 百度网页版)
举报原因:
原因补充:

(最多只允许输入30个字)