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

2023-02-10 19:54:26 浏览数 (2)

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

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

这样做的好处有几点 

1.减少自身开发成本  

2.减少项目及app大小 

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

但是同时也有弊端

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

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

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

代码语言:javascript复制
	/*
	 * 检查手机上是否安装了指定的软件
	 * 
	 * @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);
	}

经纬度变量换成自己的

代码语言:javascript复制
mLatitude 
代码语言:javascript复制
mLongitude 

目的地

代码语言:javascript复制
mAreaName 

1.百度地图跳转

代码语言:javascript复制
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.高德地图跳转

代码语言:javascript复制
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.谷歌地图跳转

代码语言:javascript复制
	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);
					}

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

0 人点赞