Android应用调起三方地图进行导航

来源:互联网 发布:上海美国学校 知乎 编辑:程序博客网 时间:2024/05/22 04:46

当项目中需要用到地点导航,可能你需要集成三方地图,但现在更多的应用的做法是直接调起手机中已经安装好的地图,高德,百度等等,这样比集成三方地图来得更快,可行性也更高,下面代码都是参考网络上的,自己整理了下

一.使用谷歌地图

Intent intent = new Intent(android.content.Intent.ACTION_VIEW,        Uri.parse("http://ditu.google.cn/maps?hl=zh&mrt=loc&q=31.1198723,121.1099877(上海青浦大街100号)"));intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK        & Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);intent.setClassName("com.google.android.apps.maps",        "com.google.android.maps.MapsActivity");startActivity(intent);



二、使用三方地图

判断地图应用是否安装

private boolean isInstallByread(String packageName) {    return new File("/data/data/" + packageName).exists();}


1.高德地图

private void openGaode(){    try {        if (isInstallByread("com.autonavi.minimap")) {            Intent intent = new Intent(                    "android.intent.action.VIEW",                    android.net.Uri.parse(                    "androidamap://route?sourceApplication=应用名称" + "&dlat="+ currentLatitude//终点的经度                    + "&dlon="+ currentLongitude//终点的纬度                            +"&dname=终点地名"            + "&dev=0" + "&t=1"));            startActivity(intent);        } else {            Toast.makeText(MainActivity.this, "没有安装百度地图客户端,请先下载该地图应用", Toast.LENGTH_SHORT).show();        }    } catch (Exception e) {        e.printStackTrace();    }}



2.百度地图

private void openBaidu(){    try {        if (isInstallByread("com.baidu.BaiduMap")) {            Intent intent = new Intent();            intent.setData(Uri.parse("baidumap://map/direction?origin=name:我的位置|latlng:"                    +locLongitude//起始点经度                    +","            +locLatitude//起始点纬度            +"&destination="            +currentLatitude//终点纬度            +","            +currentLongitude//终点经度            +"&mode=transit&sy=0&index=0&target=1"));            intent.setPackage("com.baidu.BaiduMap");            startActivity(intent); // 启动调用        } else {            Toast.makeText(MainActivity.this, "没有安装百度地图客户端,请先下载该地图应用", Toast.LENGTH_SHORT).show();        }    } catch (Exception e) {        e.printStackTrace();    }}



个人测试的时候仅测试了下高德和百度的都可以,需要注意的是高德地图的经纬度和百度地图的经纬度存在差异,也就是说,假如你的项目使用高德api获取到的经纬度,不能直接拿到百度地图来进行导航,需要进行转换,代码可以网上查,挺多,反之亦然。谷歌地图的启动的时候一直提示网络无法连接,因为是外网,需要翻墙,估计在项目中用到不多,手机上如果没有谷歌地图的话,启动会报ActivityNotFoundException,try catch下就好了,代码仅供参考,有建议或意见欢迎提出




0 0
原创粉丝点击