【Android】APP嵌入百度地图骑行导航一直初始化引擎失败解决办法

本文详细介绍了在Android应用中使用百度地图API实现骑行导航功能时遇到的初始化引擎失败问题,并提供了解决方案。通过将DEMO中的assets目录复制到项目中,成功解决了这一难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Android】 APP嵌入百度地图骑行导航一直初始化引擎失败解决办法

最近手头上有个需求需要做骑行导航

首先百度地图开放平台http://lbsyun.baidu.com/
按提示找到Android开发文档
按提示找到Android开发文档找到骑行导航,根据提示去下载平台,下载对应得DEMO,开发包
找到骑行导航,根据提示去下载平台,下载对应得DEMO,开发包DEMO下载下来之后解压,骑行导航DEMO所在的包如下图
在这里插入图片描述在这里插入图片描述ok,DEMO已经找到,导入工程、修改参数为自己应用配置(具体方法,自行百度)【包名、KEY】,运行看看效果
在这里插入图片描述
调用成功,ok,可以移植到自己的项目中了,另外可以发现,其实起点的位置,就是定位的位置,传入参数只是一个参考(个人观点)
在这里插入图片描述
在需要调用导航的页面添加代码(前提是lib已经添加到项目中)

private void prepareBikeData(double endlat,double endlong) {
        if(longitude != 0 && latituede != 4.9E-324){
        LatLng startPt = new LatLng(latituede,longitude);
        LatLng endPt = new LatLng(endlat, endlong);
        bikeParam = new BikeNaviLaunchParam().stPt(startPt).endPt(endPt).vehicle(1);//vehicle  0为普通导航  1为电动车导航
        startBikeNavi();
        }
    }
/**
     * 开始骑行导航
     */
    private void startBikeNavi() {
        Log.d("BikeNavi", "开始骑行导航");
        try {
            BikeNavigateHelper.getInstance().initNaviEngine(this, new IBEngineInitListener() {
                @Override
                public void engineInitSuccess() {
                    Log.d("BikeNavi", "引擎初始化成功");
                    routePlanWithBikeParam();
                }

                @Override
                public void engineInitFail() {
                    Log.d("BikeNavi", "引擎初始化失败");
                }
            });
        } catch (Exception e) {
            Log.d("BikeNavi", "引擎初始化异常");
            e.printStackTrace();
        }
    }

    /**
     * 发起骑行导航算路
     */
    private void routePlanWithBikeParam() {
        BikeNavigateHelper.getInstance().routePlanWithParams(bikeParam, new IBRoutePlanListener() {
            @Override
            public void onRoutePlanStart() {
                Log.d("BikeNavi", "开始算路");
            }

            @Override
            public void onRoutePlanSuccess() {
                Log.d("BikeNavi", "算路成功,跳转至诱导页面");
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, BNaviGuideActivity.class);
                startActivity(intent);
            }

            @Override
            public void onRoutePlanFail(BikeRoutePlanError error) {
                Log.d("BikeNavi", "算路失败");
            }

        });
    }

然后新的问题又来了,之前在DEMO中运行的好好的程序,一直提示,骑行导航初始化引擎失败。
各种百度,随后找到答案在DEMO中
在这里插入图片描述
assets目录下还有个 .png的文件,这不是一张图片,这个应该是百度某些资源文件,所以把这个文件夹直接拷贝到自己的项目中,再次运行,发现功能已经做好了。

### 微信小程序中集成百度地图API #### 准备工作 为了在微信小程序中成功集成并使用百度地图API,开发者需先完成准备工作。这包括注册成为百度开放平台的开发者,并获取对应的API Key。此Key用于验证身份以及访问权限控制。 #### 初始化配置 创建项目时,在`app.js`文件内全局引入百度地图SDK: ```javascript App({ onLaunch() { wx.loadFontFace({ family: 'BaiduMap', source: `url('https://mapapi.baidu.com/map/js?v=3.0&ak=YourAK')`, success(res) { console.log('加载成功', res); }, fail(err) { console.error('加载失败', err); } }); } }) ``` 注意替换上述链接中的`YourAK`为你自己申请得到的应用密钥[^1]。 #### 地图展示 要在页面上显示一张可交互的地图,可以利用官方提供的组件 `<map>` 或者借助于自定义组件来封装更复杂的行为逻辑。下面是一个简单的例子说明如何在一个名为index.wxml 的模板里嵌入基本的地图控件: ```html <view class="container"> <!-- 定义一个宽高均为750rpx的地图容器 --> <map id="bmap" style="width: 750rpx;height:750rpx;" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" show-location> </map> </view> ``` 同时,在关联的数据绑定脚本 index.js 中设置经纬度参数: ```javascript Page({ data:{ longitude: 116.404, // 经度坐标 latitude: 39.915 // 纬度坐标 } }); ``` 这段代码会渲染出位于北京市中心的一个静态地图视窗。 #### 路径规划 对于路径规划的需求,则可以通过调用百度地图的服务接口实现。比如发起GET请求至 `/direction/v2/transit/route?origin={起点}&destination={终点}` 来查询公交路线;或者向 `/route/v2/driving/...` 发送POST请求计算驾车导航方案等。具体的URL构建方式取决于所选出行模式(步行、骑行、自驾),而响应体通常包含了详细的行程建议列表,包括但不限于预计耗时、距离、途经站点名称等等信息。 以下是模拟发送一次HTTP GET 请求的例子,假设已经安装了合适的网络库如 axios : ```javascript const axios = require('axios'); // 构造完整的 URL 参数字符串 let urlParams = new URLSearchParams(); urlParams.append('origin', `${this.data.latitude},${this.data.longitude}`); urlParams.append('destination', '39.983424,116.32298'); urlParams.append('output', 'json'); urlParams.append('ak', '您的应用秘钥'); axios.get(`http://api.map.baidu.com/direction/v2/transit`,{params:urlParams}).then(response => { let result = response.data; if(result.status === 0){ console.log("找到"+result.routes.length+"条推荐线路"); }else{ console.warn("未能获得有效结果:",result); } }).catch(error=>console.error("发生错误",error)); ``` 这里仅展示了最基础的操作流程,实际应用场景下可能还需要处理更多细节问题,例如异常情况下的重试机制设计、用户输入合法性校验等。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值