前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android 跳转第三方地图(百度,高德,谷歌)

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

作者头像
再见孙悟空_
发布2023-02-10 19:54:26
2K0
发布2023-02-10 19:54:26
举报

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档