第三方应用调取百度地图、高德地图操作实例导航

在项目中需要使用导航功能,为用户提供便捷,但是集成地图导航还要涉及到语音等问题,所以本篇文章帮住初学者直接使用第三方的应用;百度地图客户端,高德地图客户端;
一、首先判断手机内有没有对应客户端,如果没有怎么可能调动。。。

/**  
     * 判断是否安装目标应用  
     * @param packageName 目标应用安装后的包名  
     * @return 是否已安装目标应用  
     */   
     private boolean isInstallByread(String packageName) {   
        return new File("/data/data/" + packageName).exists();   
     }

二、实现弹出对话框,因为手机可能有多个地图,让用户可以选择:

private void changeMap() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle("请选择");
        //    指定下拉列表的显示数据
        final String[] cities = {"百度地图", "高德地图", "腾讯地图"};
        //    设置一个下拉的列表选择项
        builder.setItems(cities, new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
            Intent intent;
            switch (which){
            case 0:  //百度地图 
                if(isInstallByread("com.baidu.BaiduMap")){
                    openBaiDuMap("39.9049340000,116.4272200000","xxxxx","driving");
                }else{
                    Toast.makeText(MainActivity.this, "您没有安装百度地图客户端", Toast.LENGTH_SHORT).show();
                }

            break;
            case 1:    //高德地图
                if(isInstallByread("com.autonavi.minimap")){
                    openGaoDeMap(MainActivity.this,"com.autonavi.minimap","目的地","39.9049340000","116.4272200000","1","2");
                }else{
                    Toast.makeText(MainActivity.this, "您没有安装高德地图客户端", Toast.LENGTH_SHORT).show();
                }
            break;
            case 2:   //腾讯地图

            break;

            }

三、开启百度地图导航

/*parms lat表示经纬度
     * destination 表示目的地
     * mode  表示导航类型,驾车、骑行、步行
     * 
    * */
protected void openBaiDuMap(String lat,String destination,String mode) {
        // 驾车路线规划
        Intent i1 = new Intent();
        i1.setData(Uri.parse("baidumap://map/direction?&origin="+lat+"&destination="+destination+"&mode="+mode));

        startActivity(i1);

    }

上面是最简单的导航方式,如果需求更大可以看官方文档:
http://lbsyun.baidu.com/index.php?title=uri/api/android

四、开启高德地图

 /**
         * 启动高德App进行导航
         * @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 void openGaoDeMap(Context context,String sourceApplication , String poiname , String lat , String lon , String dev , String style){
            StringBuffer stringBuffer  = new StringBuffer("androidamap://navi?sourceApplication=")
                    .append(sourceApplication);
            if (poiname!=null){
                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(sourceApplication);
            startActivity(intent);
        }

五、总结,以上就是简单的调用第三方地图进行实时导航的实现。如果有更多需求还是建议自己集成相关的SDK。感谢生活,感谢可科技!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值