Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

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

$
0
0

现在我们在做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

作者:shaoyezhangliwei 发表于2017/9/13 17:38:58 原文链接
阅读:202 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>