开发者社区> 禁言> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android 开发中的代码片段(3)地图操作相关

简介: 前言 收集常用的代码块,留存记录。此次代码块包含:唤起高德地图导航、唤起百度地图导航 代码 判断手机内安装的地图 /**判断是否安装目标应用*/ private boolean isInstallByread(String packageName) {...
+关注继续查看

前言

收集常用的代码块,留存记录。此次代码块包含:唤起高德地图导航、唤起百度地图导航

代码

判断手机内安装的地图

/**判断是否安装目标应用*/
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 不走高速躲避收费和拥堵

效果如下:

img_42b61a49ae1c656dc29b3fcf6372c21e.png
高德地图驾车导航演示

唤起百度地图导航(驾车)

/**
 * 移动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: 默认偏好;
默认使用地图中已保存的路线偏好(缺省值)。

除缺省值外,若用户已勾选车牌限行,其他类型都会默认增加车牌限行的偏好。

最后

本文只写了驾车相关的导航实例,剩余的公交、步行、骑行可参考官方文档。

官方文档:

未完待续、后续补充!
我的博客地址

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android——集地图、定位、导航于一体
电子地图 地图 修改定位图标 定位 导航 尾言
17 0
Android开发之Activity转场动画
引子 相信开发过iOS的程序员都知道iOS ViewController之间的跳转动画非常多,很酷对不对?这让开发Android的羡慕不已,曾几何时,Android中的Activity跳转是何等的生硬,But,在Android 5.0以后,Google也为Activity的转场设计了更加友好的动画效果。
766 0
【阿里云资讯】国家基因库投入运营:全球最大,采用阿里云飞天云计算操作系统
9月22日,位于深圳大鹏新区的中国首个、全球第四个国家级基因库正式投入运营。 国家基因库是全世界最大的综合性基因库,1期建成后,综合能力世界第一。为了确保“干库”具备优良的数据吞吐能力和足够安全可靠,国家基因库运营方华大基因同阿里云达成战略合作,阿里云飞天操作系统将承担这个重任。
1968 0
+关注
禁言
如何成为一名全屏攻城狮? 啊哈,口误,应该是如何成为一名全栈攻城狮.
50
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载