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

**
 * 应用外导航工具类
 * Created by guo on 2017/11/14.
 */

public class AMapUtil {
    /** 腾讯地图 Uri 标识*/
    public  final static  String BASE_URL = "qqmap://map/";


    /**
     * 启动高德App进行导航
     * <h3>Version</h3> 1.0
     * <h3>CreateTime</h3> 2016/6/27,13:58
     * <h3>UpdateTime</h3> 2016/6/27,13:58
     * <h3>CreateAuthor</h3>
     * <h3>UpdateAuthor</h3>
     * <h3>UpdateInfo</h3> (此处输入修改内容,若无修改可不写.)
     *
     * @param sourceApplication 必填 第三方调用应用名称。如 amap
     * @param poiname 非必填 POI 名称
     * @param lat 必填 纬度
     * @param lon 必填 经度
     * @param dev 必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)
     * @param style 必填 导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7 躲避收费和拥堵;8 不走高速躲避收费和拥堵))
     */
    public static  void goToNaviActivity(Context context, String sourceApplication , String poiname , String lat , String lon , String dev , String style){
        StringBuffer stringBuffer  = new StringBuffer("androidamap://navi?sourceApplication=")
                .append(sourceApplication);
        if (!TextUtils.isEmpty(poiname)){
            stringBuffer.append("&poiname=").append(poiname);
        }
        stringBuffer.append("&lat=").append(lat)
                .append("&lon=").append(lon)
                .append("&dev=").append(dev)
                .append("&style=").append(style);

        Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
        intent.setPackage("com.autonavi.minimap");
        context.startActivity(intent);
    }

    /**
     * 调用腾讯地图app驾车导航
     * (此处输入方法执行任务.)
     * <h3>Version</h3> 1.0
     * <h3>CreateTime</h3> 2017/11/9,15:31
     * <h3>UpdateTime</h3> 2017/11/9,15:31
     * <h3>CreateAuthor</h3>
     * <h3>UpdateAuthor</h3>
     * <h3>UpdateInfo</h3> (此处输入修改内容,若无修改可不写.)
     * @param context
     * @param from  选 出发地址
     * @param fromcoord 选 出发经纬度   移动端如果起点名称和起点坐标均未传递,则使用当前定位位置作为起点 如 39.9761,116.3282
     * @param to  必 目标地址
     * @param tocoord  必 目标经纬度 39.9761,116.3282
     * @param policy  选  本参数取决于type参数的取值
     *               公交:type=bus,policy有以下取值 0:较快捷 1:少换乘 2:少步行 3:不坐地铁
     *               驾车:type=drive,policy有以下取值 0:较快捷 1:无高速 2:距离 policy的取值缺省为0
     * @param coord_type  选 坐标类型,取值如下:1 GPS  2 腾讯坐标(默认)  如果用户指定该参数为非腾讯地图坐标系,则URI API自动进行坐标处理,以便准确对应到腾讯地图底图上。
     * @param type  必 公交:bus  驾车:drive  步行:walk(仅适用移动端)
     * @param referer  必  调用来源,一般为您的应用名称,为了保障对您的服务,请务必填写!
     */
    public static  void invokeNavi(Context context, @NonNull String type, String coord_type, String from ,
                                   String fromcoord, @NonNull String to, @NonNull String tocoord, String policy, @NonNull String referer){
        StringBuffer stringBuffer  = new StringBuffer(BASE_URL)
                .append("routeplan?")
                .append("type=")
                .append(type)
                .append("&to=")
                .append(to)
                .append("&tocoord=")
                .append(tocoord)
                .append("&referer=")
                .append(referer);
        if (!TextUtils.isEmpty(from)){
            stringBuffer.append("&from=").append(from);
        }
        if (!TextUtils.isEmpty(fromcoord)){
            stringBuffer.append("&fromcoord=").append(fromcoord);
        }
        if (!TextUtils.isEmpty(policy)){
            stringBuffer .append("&policy=").append(policy);
        }
        if (!TextUtils.isEmpty(coord_type)){
            stringBuffer .append("&coord_type=").append(coord_type);
        }
        Intent intent = new Intent();
        intent.setData(Uri.parse(stringBuffer.toString()));
        context.startActivity(intent);
    }


    /**
     * 百度地图
     * (此处输入方法执行任务.)
     * <h3>Version</h3> 1.0
     * <h3>CreateTime</h3> 2017/11/9,15:31
     * <h3>UpdateTime</h3> 2017/11/9,15:31
     * <h3>CreateAuthor</h3>
     * <h3>UpdateAuthor</h3>
     * <h3>UpdateInfo</h3> (此处输入修改内容,若无修改可不写.)
     * @param context 上下文
     * @param coord_type coord_type 可选 坐标类型,可选参数,默认为bd09经纬度坐标
     * @param src  必选 调用来源,规则:companyName|appName。
     * @param location 经纬度 例如:39.9761,116.3282
     */
    public static  void invokeNavi(Context context, String coord_type , @NonNull String src,@NonNull String location){
        StringBuffer stringBuffer  = new StringBuffer("baidumap://map/navi?");
        if (!TextUtils.isEmpty(coord_type)){
            stringBuffer.append("coord_type=").append(coord_type);
        }
        stringBuffer.append("&src=").append(src);
        stringBuffer.append("&location=").append(location);
        Intent intent = new Intent();
        intent.setData(Uri.parse(stringBuffer.toString()));
        context.startActivity(intent);
    }





    /**
     * 根据包名检测某个APP是否安装
     * <h3>Version</h3> 1.0
     * <h3>CreateTime</h3> 2016/6/27,13:02
     * <h3>UpdateTime</h3> 2016/6/27,13:02
     * <h3>CreateAuthor</h3>
     * <h3>UpdateAuthor</h3>
     * <h3>UpdateInfo</h3> (此处输入修改内容,若无修改可不写.)
     *
     * @param packageName 包名
     * @return true 安装 false 没有安装
     */
    public static boolean isInstallByRead(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }


}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值