android 跳转第三方地图(百度,高德,谷歌)
        【摘要】 
                    现在我们在做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)