唤起地图应用进行路线规划、导航

需求:在APP中唤起地图应用(高德地图/百度地图/腾讯地图)进行路线规划、导航。

前提:系统支持(即系统支持唤起第三方地图软件,并直接进入对应的模块,目前来看,Android、iOS、web/h5都是支持的)。

原理:使用地图方(高德地图/百度地图/腾讯地图)开放的能力。

链接:
高德地图:https://lbs.amap.com/api/amap-mobile/guide/android/navigation
百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/android
腾讯地图:https://lbs.qq.com/webApi/uriV1/uriGuide/uriMobileRoute

就Android端,APP唤起地图应用(高德地图/百度地图/腾讯地图)进行路线规划,具体如何实现,下面我们来看:

首先,来一个本需求相关的功能实现,即判断手机上是否安装了相关软件。

    /**
     * 判断手机上是否安装了指定应用程序
     * @param context
     * @param packageName
     * @return
     */
    public static boolean appInstalled(Context context, String packageName) {
        PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        if (packageInfos != null) {
            for (int i = 0; i < packageInfos.size(); i++) {
                if (packageName.equals(packageInfos.get(i).packageName)) {
                    return true;
                }
            }
            return false;
        } else {
            return false;
        }
    }
}

回归正题,
1、高德地图

Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("androidamap://route/plan?");  //路线规划
stringBuilder.append("&dlat=").append(30.267443);
stringBuilder.append("&dlon=").append(120.152792);
stringBuilder.append("&dname=").append("浙江省政府");
stringBuilder.append("&dev=").append(0);  //是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密)
intent.setData(Uri.parse(stringBuilder.toString()));
intent.setPackage("com.autonavi.minimap");
startActivity(intent);

附加高德地图导航

Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("androidamap://navi?sourceApplication=amap");  //导航
stringBuilder.append("&lat=").append(30.267443);
stringBuilder.append("&lon=").append(120.152792);
stringBuilder.append("&dev=").append(0);  //是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密)
intent.setData(Uri.parse(stringBuilder.toString()));
intent.setPackage("com.autonavi.minimap");
startActivity(intent);

2、百度地图

Intent intent = new Intent();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("baidumap://map/direction?destination=name:");
stringBuilder.append("浙江省政府");
stringBuilder.append("|").append("latlng:");
stringBuilder.append(30.267443);
stringBuilder.append(",");
stringBuilder.append(120.152792);
stringBuilder.append("&coord_type=gcj02");  //设置坐标类型为经国测局加密的坐标
intent.setData(Uri.parse(stringBuilder.toString()));
intent.setPackage("com.baidu.BaiduMap");
startActivity(intent);

3、腾讯地图

Intent intent = new Intent();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("qqmap://map/routeplan?");
stringBuilder.append("type=drive");
stringBuilder.append("&to=").append("浙江省政府");
stringBuilder.append("&tocoord=").append(30.267443).append(",").append(120.152792);
intent.setData(Uri.parse(stringBuilder.toString()));
intent.setPackage("com.tencent.map");
startActivity(intent);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度地图iOS SDK v2.10.0 Sample共有23个Demo,每个Demo的说明如下: ------------------------------------------------------------------------------------- 一、 Demo名称:基本地图功能 文件名: MapViewBaseDemoViewController.mm 简介:创建一张百度地图并管理地图的生命周期 详述: (1)创建一张最简单的百度地图; (2)管理地图的生命周期,具体请参看代码部分的相关注释; ------------------------------------------------------------------------------------- 二、 Demo名称:多地图展示功能 文件名: MultiMapViewDemo.mm 简介:在一个页面中创建多个地图 详述: (1)在一个页面内创建多个相互独立的地图 (2)地图Logo位置变更,支持6个位置 ------------------------------------------------------------------------------------- 三、 Demo名称:图层展示功能 文件名: MapViewDemoViewController.mm 简介:展示普通图、卫星图、路况图和路况卫星图 详述: (1)详情请参考代码部分或官网开发指南相关章节; ------------------------------------------------------------------------------------- 四、 Demo名称:地图操作功能 文件名: MapViewControlDemoViewController.mm 简介:介绍平移和缩放地图,双指操作地图,监听地图点击事件 详述: (1)介绍地图缩放级别、旋转度和俯视度的get和set方法; (2)监听单击、双击和长按地图事件; (3)单击、双击或长按地图获取该点的经纬度坐标; (4)对地图显示内容进行截图; ------------------------------------------------------------------------------------- 五、 Demo名称:UI控制功能 文件名: MapViewUISettingDemoViewController.mm 简介:介绍开关手势功能和显示隐藏UI控件 详述: (1)地图操作开关:平移、缩放; (2)控件显示开关:显示/隐藏比例尺控件; (3)指南针位置控制:显示在地图左上角或者右上角(仅举例),开发者可据实际情况任意改变位置; (4)禁用所有手势:控制是否一并禁止所有手势。 (5)设置边界区域:给地图增加边界。地图可操作区域和控件显示,都被限制在地图设定的边界内; (6)您还可以参照开发文档控制比例尺的显示位置; ------------------------------------------------------------------------------------- 六、 Demo名称:定位功能 文件名: LocationDemoViewController.mm 简介:介绍定位图层的基本用法 详述: (1)介绍如何开始定位和停止定位; (2)默认定位的状态显示为普通态,v2.0.2版本开始提供定位的跟随态和罗盘态; (3)开发者可以自己修改icon_center_point.png和icon_center_point@2x.png资源修改默认的定位图标; (4)支持开发者自行定义精度圈边框和填充区域的颜色。 ------------------------------------------------------------------------------------- 七、 Demo名称:覆盖物功能 文件名: AnnotationDemoViewController.mm 简介:介绍使用SDK内置方法绘制点线面等几何图形和如何添加标注 详述: (1)内置覆盖物标签: a、使用内置方法绘制几何图形; b、通过BMKMapView的addOverlay接口添加一个覆盖物; c、开发者可以实现BMKMapViewDelegate中mapView:viewForOverlay;接口,提供要添加到地图中的 标注的BMKOverlayView,开发者可以扩展此类丰富更多的功 (2)添加标注标签: a、给标注添加落下的动画效果,点击标注可弹出对话框,还可以拖拽标注; b、通过BMKMapView的addAn

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值