Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航

因为公司项目需要用到外部导航,找到一些,大兄弟们凑合看...好吧反正也没人看- -


1.调用百度导航

//开启百度导航
    public void startNavi() {
        //百度地图,从起点是LatLng ll_location = new LatLng("你的纬度latitude","你的经度longitude");
        //终点是LatLng ll = new LatLng("你的纬度latitude","你的经度longitude");
        NaviParaOption para = new NaviParaOption();
        para.startPoint(ll_location);
        para.startName("从这里开始");
        para.endPoint(ll);
        para.endName("到这里结束");
        try {
            BaiduMapNavigation.openBaiduMapNavi(para, getContext());
        } catch (BaiduMapAppNotSupportNaviException e) {
            e.printStackTrace();
            ToastUtil.showToast("您尚未安装百度地图或地图版本过低");
        }
    }

2.调用高德地图导航

//高德地图,起点就是定位点
    // 终点是LatLng ll = new LatLng("你的纬度latitude","你的经度longitude");
    public void startNaviGao() {
        if (isAvilible(getContext(), "com.autonavi.minimap")) {
            try {
                //sourceApplication
                Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=公司的名称(随意写)&poiname=我的目的地&lat=" + ll.latitude + "&lon=" + ll.longitude + "&dev=0");
                startActivity(intent);
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        } else {
            ToastUtil.showToast("您尚未安装高德地图或地图版本过低");
        }
    }


3.调用谷歌地图(用谷歌地图得翻墙,不然打开就是一片空白)

//谷歌地图,起点就是定位点
    // 终点是LatLng ll = new LatLng("你的latitude","你的longitude");
    public void startNaviGoogle() {
        if (isAvilible(getContext(), "com.google.android.apps.maps")) {
            Uri gmmIntentUri = Uri.parse("google.navigation:q=" + ll.latitude + "," + ll.longitude);
            Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
            mapIntent.setPackage("com.google.android.apps.maps");
            startActivity(mapIntent);
        } else {
            ToastUtil.showToast("您尚未安装谷歌地图或地图版本过低");
        }
    }


4.验证手机中是否安装了地图

 //验证各种导航地图是否安装
    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中是否有目标程序的包名,有TRUE,没有FALSE
        return packageNames.contains(packageName);
    }


5.一个吐司类

public class ToastUtil {
	
	private static Toast toast;
	/**
	 * 强大的可以连续弹的吐司
	 * @param text
	 */
	public static void showToast(String text){
		if(toast==null){
			//创建吐司对象
			toast = Toast.makeText(MyApplication.context, text, Toast.LENGTH_LONG);
		}else {
			//说明吐司已经存在了,那么则只需要更改当前吐司的文字内容
			toast.setText(text);
		}
		//最后你再show
		toast.show();
	}
}


6.调用成功的示意图



  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值