Android启动第三方地图APP导航功能

这篇博客介绍了如何在Android应用中使用工具类启动第三方地图应用,并实现导航功能,包括经纬度的规范传递方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一个我的工具类,没啥好多说的,传递经纬度的时候标准传入方式也有

public class PccGo2MapUtil {
    private Context context;

    public PccGo2MapUtil(Context context) {
        this.context = context;
    }

    /**
     * 启动高德地图,从我的位置到addressName
     * @param addressName 终点
     */
    private void go2Gaode(String addressName) {
        try {
            Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dname=" + addressName + "&dev=0&m=0&t=1");
            if (isAvilible(context, "com.autonavi.minimap")) {
                context.startActivity(intent);
            } else {
                Toast.makeText(context,"高德地图未安装",Toast.LENGTH_SHORT).show();
            }
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    /**
     * 启动百度地图,从我的位置到addressName
     * @param addressName 终点
     */
    public void go2Baidu(String addressName) {
        try {
            Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination=" + addressName + "&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
            if (isAvilible(context, "com.baidu.BaiduMap")) {
                context.startActivity(intent);
            } else {
                Toast.makeText(context,"百度地图未安装",Toast.LENGTH_SHORT).show();
            }
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

    }

    /**
     * 启动百度地图,从我的位置到指定经纬度位置
     * @param lat 纬度
     * @param lng 经度
     */
    public void go2Baidu(double lat,double lng) {
        String latlng = lat + "," + lng;
        try {
            Uri uri = Uri.parse("baidumap://map/direction?destination=latlng:"+"目的地lat"+","+ "目的地lng"+"|name:"+"目的地名称"+"&mode=driving");
            Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination=" + latlng + "&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
            if (isAvilible(context, "com.baidu.BaiduMap")) {
                context.startActivity(intent);
            } else {
                Toast.makeText(context,"百度地图未安装",Toast.LENGTH_SHORT).show();
            }
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

    }

    /**
     * 检查手机上是否安装了指定的packageName的软件
     * @param context
     * @param packageName 应用包名
     * @return */
    public static boolean isAvilible(Context context, String packageName) {
        //获取packagemanager
        final PackageManager packageManager = context.getPackageManager();
        //获取所有已安装程序的包信息
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        //用于存储所有已安装程序的包名
        List<String> packageNames = new ArrayList<String>();
        //从pinfo中将包名字逐一取出,压入pName list中
        if (packageInfos != null) {
            for (int i = 0; i < packageInfos.size(); i++) {
                String packName = packageInfos.get(i).packageName;
                packageNames.add(packName);
            }
        }
        //判断packageNames中是否有目标程序的包名
        return packageNames.contains(packageName);
    }

}

经纬度规范传入方式:

Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dlat=" + location.getLatitude() + "&dlon=" + location.getLongitude() + "&dname=" + addressname + "&dev=0&m=0&t=1");

当然很多时候你已经获取到了经纬度,就不需要像我这样去用location获取了,可以直接传进来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值