Android应用内打开高德、百度、腾讯地图app

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lintianlin/article/details/79817425

     最近在项目中需要地图导航功能,但是导入第三方地图导航包的话,应用打出包后会很大,所以考虑到可以通过调用外部地图应用来解决,参考了微信打开外部地图的做法,有了下面的解决办法:

1.主要思路:通过高德、百度、腾讯提供的Uri打开应用外部地图app.

2.关键代码(以高德地图为例):

/**
     * 打开高德
     *
     * @param latitude
     * @param longitude
     */
    private static void openGaode(Activity activity, String title, double latitude, double longitude) {
        if (AppUtils.isAvilible("com.autonavi.minimap")) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_DEFAULT);

            //将功能Scheme以URI的方式传入data
            Uri uri = Uri.parse("androidamap://route/plan/?dlat=" + latitude + "&dlon=" + longitude + "&dname=" + title + "&dev=0&t=0");
            intent.setData(uri);

            //启动该页面即可
            activity.startActivity(intent);
        } else {
            ToastUtils.showToast("您尚未安装高德地图");
            Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            if (intent.resolveActivity(activity.getPackageManager()) != null) {
                activity.startActivity(intent);
            }
        }
    }

3.高德、百度、腾讯官方uri调起app文档传送门:

        高德地图:http://lbs.amap.com/api/amap-mobile/guide/android/route

        百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/android

        腾讯地图:http://lbs.qq.com/uri_v1/index.html

4.需要注意的地方

        由于自己应用中集成的是高德地图,用的是GCJ-02坐标系(火星坐标系),所以当打开百度地图时需要进行坐标转换,将火星坐标系转换成百度坐标系BD09。 具体看代码: CoodinateCovertor.java

5.github地址:https://github.com/lintianlin/OpenMapDemo


猜你喜欢

转载自blog.csdn.net/lintianlin/article/details/79817425