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

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

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

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

这样做的好处有几点 

1.减少自身开发成本  

2.减少项目及app大小 

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

但是同时也有弊端

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

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

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


  
  1. /*
  2. * 检查手机上是否安装了指定的软件
  3. *
  4. * @param context
  5. *
  6. * @param packageName:应用包名
  7. *
  8. * @return
  9. */
  10. public static boolean isAvilible(Context context, String packageName) {
  11. // 获取packagemanager
  12. final PackageManager packageManager = context.getPackageManager();
  13. // 获取所有已安装程序的包信息
  14. List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
  15. // 用于存储所有已安装程序的包名
  16. List<String> packageNames = new ArrayList<String>();
  17. // 从pinfo中将包名字逐一取出,压入pName list中
  18. if (packageInfos != null) {
  19. for (int i = 0; i < packageInfos.size(); i++) {
  20. String packName = packageInfos.get(i).packageName;
  21. packageNames.add(packName);
  22. }
  23. }
  24. // 判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
  25. return packageNames.contains(packageName);
  26. }


经纬度变量换成自己的

mLatitude 
 
mLongitude 
 


目的地

mAreaName 
 

1.百度地图跳转


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

2.高德地图跳转


  
  1. if (isAvilible(context, "com.autonavi.minimap")) {
  2. try {
  3. Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=新疆和田&poiname="+mAreaName+"&lat="
  4. + mLatitude
  5. + "&lon="
  6. + mLongitude + "&dev=0");
  7. context.startActivity(intent);
  8. } catch (URISyntaxException e) {
  9. e.printStackTrace();
  10. }
  11. } else {
  12. Toast.makeText(context, "您尚未安装高德地图", Toast.LENGTH_LONG)
  13. .show();
  14. Uri uri = Uri
  15. .parse("market://details?id=com.autonavi.minimap");
  16. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  17. context.startActivity(intent);
  18. }

3.谷歌地图跳转


  
  1. if (isAvilible(context, "com.google.android.apps.maps")) {
  2. Uri gmmIntentUri = Uri.parse("google.navigation:q="
  3. + mLatitude + "," + mLongitude
  4. + ", + Sydney +Australia");
  5. Intent mapIntent = new Intent(Intent.ACTION_VIEW,
  6. gmmIntentUri);
  7. mapIntent.setPackage("com.google.android.apps.maps");
  8. context.startActivity(mapIntent);
  9. } else {
  10. Toast.makeText(context, "您尚未安装谷歌地图", Toast.LENGTH_LONG)
  11. .show();
  12. Uri uri = Uri
  13. .parse("market://details?id=com.google.android.apps.maps");
  14. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  15. context.startActivity(intent);
  16. }


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

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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