android 跳转第三方地图(百度,高德,谷歌)

举报
再见孙悟空_ 发表于 2022/01/12 23:48:15 2022/01/12
2.3k+ 0 0
【摘要】 现在我们在做app的时候除了功能性以外,还会考虑开发时间和开发成本 ,所以很多功能我们可以技巧性的避开自己开发,直接跳转到三方软件。 比如  地图的导航功能,我们完全可以不必集成三方的sdk, 这样做的好处有几点  1.减少自身开发成本   2.减少项目及app大小  3.功能性自己做不...

现在我们在做app的时候除了功能性以外,还会考虑开发时间和开发成本 ,所以很多功能我们可以技巧性的避开自己开发,直接跳转到三方软件。

比如  地图的导航功能,我们完全可以不必集成三方的sdk,

这样做的好处有几点 

1.减少自身开发成本  

2.减少项目及app大小 

3.功能性自己做不如三方app的全面

但是同时也有弊端

就是一些客户倘若没有安装任何一款三方的地图软件  这样的话可能使用时会有一些不方便,但是感觉这种用户比较少,即使没有安装,也可以跳转到应用市场对应的三方软件下载界面。

话不多说 ,直接说正题 地图跳转实现 

在做跳转之前 要先判断当前机器上有没有安装相关的三方软件,方法如下


     	/*
       * 检查手机上是否安装了指定的软件
       *
       * @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中是否有目标程序的包名,有TRUE,没有FALSE
     		return packageNames.contains(packageName);
      	}
  
 


经纬度变量换成自己的

mLatitude 
 
mLongitude 
 

目的地

mAreaName 
 

1.百度地图跳转


      if (isAvilible(context, "com.baidu.BaiduMap")) {// 传入指定应用包名
     						try {
     							Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"
      											+ mLatitude + ","
      											+ mLongitude + "|name:"+mAreaName + // 终点
     											"&mode=driving&" + // 导航路线方式
     											"region=北京" + //
     											"&src=新疆和田#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
      							context.startActivity(intent); // 启动调用
      						} catch (URISyntaxException e) {
      							Log.e("intent", e.getMessage());
      						}
      					} else {// 未安装
      						Toast.makeText(context, "您尚未安装百度地图", Toast.LENGTH_LONG)
      								.show();
     						Uri uri = Uri
      								.parse("market://details?id=com.baidu.BaiduMap");
     						Intent intent = new Intent(Intent.ACTION_VIEW, uri);
      						context.startActivity(intent);
      					}
  
 

2.高德地图跳转


      if (isAvilible(context, "com.autonavi.minimap")) {
     						try {
     							Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=新疆和田&poiname="+mAreaName+"&lat="
      											+ mLatitude
      											+ "&lon="
      											+ mLongitude + "&dev=0");
      							context.startActivity(intent);
      						} catch (URISyntaxException e) {
      							e.printStackTrace();
      						}
      					} else {
      						Toast.makeText(context, "您尚未安装高德地图", Toast.LENGTH_LONG)
      								.show();
     						Uri uri = Uri
      								.parse("market://details?id=com.autonavi.minimap");
     						Intent intent = new Intent(Intent.ACTION_VIEW, uri);
      						context.startActivity(intent);
      					}
  
 

3.谷歌地图跳转


     	if (isAvilible(context, "com.google.android.apps.maps")) {
     						Uri gmmIntentUri = Uri.parse("google.navigation:q="
      								+ mLatitude + "," + mLongitude
      								+ ", + Sydney +Australia");
     						Intent mapIntent = new Intent(Intent.ACTION_VIEW,
      								gmmIntentUri);
      						mapIntent.setPackage("com.google.android.apps.maps");
      						context.startActivity(mapIntent);
      					} else {
      						Toast.makeText(context, "您尚未安装谷歌地图", Toast.LENGTH_LONG)
      								.show();
     						Uri uri = Uri
      								.parse("market://details?id=com.google.android.apps.maps");
     						Intent intent = new Intent(Intent.ACTION_VIEW, uri);
      						context.startActivity(intent);
      					}
  
 


讲道理 很简单 ,比起自己开发一大套导航的业务要简单很多,当然要不要自己开发也要根据自己的业务而定。

有其他的问题可以加入我的qq群:开发一群:454430053开发二群:537532956

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/77968566

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。