关闭

调用第三方地图导航,高德、百度、谷歌,无需引用sdk

标签: 地图导航
563人阅读 评论(0) 收藏 举报
分类:

   先判断是否存在地图,存在就可以进入导航,没有的话就默认进入市场下载app,代码如下:

i1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new AlertDialog.Builder(mContext).setSingleChoiceItems(new String[]{"百度", "高德", "谷歌"}, 0, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if (which == 0) {
                    baidu();
                } else if (which == 1) {
                    gaode();
                } else {
                    guge();
                }
            }
        }).show();
    }
});


 /*  * 检查手机上是否安装了指定的软件
      * @param context
      * @param packageName:应用包名
              */
    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);
    }

    private void baidu() {
        if (isAvilible(mContext, "com.baidu.BaiduMap")) {//传入指定应用包名
            try {
//                          intent = Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving®ion=西安&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
                Intent intent = Intent.getIntent("intent://map/direction?" +
                        //"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起点  此处不传值默认选择当前位置
                        "destination=latlng:" + 34.264642646862 + "," + 108.95108518068 + "|name:东莞" +        //终点
                        "&mode=driving&" +          //导航路线方式
                        "region=北京" +           //
                        "&src=我的app名字#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
                mContext.startActivity(intent); //启动调用
            } catch (URISyntaxException e) {
                Log.e("intent", e.getMessage());
            }
        } else {//未安装
            //market为路径,id为包名
            //显示手机上所有的market商店
            Toast.makeText(mContext, "您尚未安装百度地图", Toast.LENGTH_LONG).show();
            Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            mContext.startActivity(intent);
        }
    }

    private void gaode() {
        if (isAvilible(mContext, "com.autonavi.minimap")) {
            try {
                Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=我的app名字&poiname=广州&lat=" + 34.264642646862 + "&lon=" + 108.95108518068 + "&dev=0");
                mContext.startActivity(intent);
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        } else {
            Toast.makeText(mContext, "您尚未安装高德地图", Toast.LENGTH_LONG).show();
            Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            mContext.startActivity(intent);
        }
    }

    private void guge() {
        if (isAvilible(mContext,"com.google.android.apps.maps")) {
            Uri gmmIntentUri = Uri.parse("google.navigation:q="+34.264642646862 +","+108.95108518068 +", + Sydney +Australia");
            Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
            mapIntent.setPackage("com.google.android.apps.maps");
            mContext.startActivity(mapIntent);
        }else {
            Toast.makeText(mContext, "您尚未安装谷歌地图", Toast.LENGTH_LONG).show();

            Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps");
            Intent   intent = new Intent(Intent.ACTION_VIEW, uri);
            mContext.startActivity(intent);  }
    }


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航

Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航
  • zhaozhuzi
  • zhaozhuzi
  • 2017-04-17 15:56
  • 3675

安卓通过经纬度,实现intent调用百度,高德,Google地图客户端实现驾车导航功能

大家在开发中实现多套地图实现导航功能,导入sdk会增大APK体积,且繁琐,但是在代码可以通过Intent就可以直接调用百度地图客户端、高德地图客户端、Google 地图客户端实现导航功能!话不多说直接...
  • mxy111111
  • mxy111111
  • 2016-11-18 12:00
  • 3416

iOS 调用地图导航

转自:http://www.cnblogs.com/langtianya/p/4006588.html 注意:本文章下的代码有个别变量未知,所以是不能直接跑通的,我也是转别人的 在IO...
  • gf771115
  • gf771115
  • 2015-01-09 14:40
  • 17673

IOS实现应用内打开第三方地图app进行导航

用过微信的应该都知道这个功能,对方发一个位置给你,点进去地图展示对方跟你的当前位置,界面提供了选择各个地图应用进行导航,更好这次需求也要搞这个功能。 这个功能实现不难,个人感觉比应用内嵌入第三方地图导...
  • a416863220
  • a416863220
  • 2016-04-22 16:00
  • 11789

Android app调用第三方地图(百度地图,高德地图)导航

** * 应用外导航工具类 * Created by guo on 2017/11/14. */ public class AMapUtil { /** 腾讯地图 Uri 标识*/ ...
  • s13383754499
  • s13383754499
  • 2017-11-14 11:35
  • 186

android调用外部导航(百度,高德)

高德 com.autonavi.minimap 百度 com.baidu.BaiduMap 百度 如果已安装跳转安装的程序 如果没有安装跳转网页版百度地图 private void open...
  • zhaoyazhi2129
  • zhaoyazhi2129
  • 2017-05-17 14:44
  • 986

5张对比图告诉你,天地图,高德地图,百度地图,谷歌地图区别

先来看看传说中最争议的天地图吧. 最大放大距离,每厘米25米. 我们用这个体育场和下面的大厦做对比..其实还有大厦下的车..(这张图上的车看不清,真有,没骗你们....) 再上一...
  • dongsheng186
  • dongsheng186
  • 2015-06-30 17:29
  • 7658

几个地图(高德、百度、Apple、Google)URL API

1、高德地图 示例(iOS): iosamap://navi?sourceApplication=applicationName&backScheme=applicationScheme&poinam...
  • cooldragon
  • cooldragon
  • 2014-03-06 18:06
  • 13359

微信小程序调用第三方地图API实现获取输入提示词

最后实现的效果如下: 这里我以谷歌地图为例: 谷歌官方给我们提供了完整的操作步骤,详细请参见:http://lbs.amap.com/api/wx/guide/get-data...
  • lq_lq314
  • lq_lq314
  • 2017-05-10 15:38
  • 874

android开发游记:APP内部调启百度、高德、web地图导航

一些地图相关的app一般都需要集成导航的功能方便用户使用,但实际上我们很多时候仅仅只是希望提供这样一个贴心的功能把用户送到目的地,而并不会在导航过程中进行自己的业务的处理,这样把导航的功能完全独立出来...
  • liaoinstan
  • liaoinstan
  • 2016-03-12 11:05
  • 13486
    个人资料
    • 访问:21890次
    • 积分:996
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:13篇
    • 译文:0篇
    • 评论:3条
    最新评论