百度地图路线规划开发过程中遇到的坑

鄙人是一名Android新手,最近在接了一个百度地图路径规划的开发任务,由于废了相当大的劲,现总结遇到的坑和开发过程中用到的东西,以便广大新手和我日后借鉴(记不住)与大家交流。

 

好多专业语言表达不准确,请见谅,高手勿喷,若有错误或者更好的解决方法,希望能学习一下。

本文只针对驾车路线规划。

首先,新建地图就不说了。

以下为百度地图路径规划官方的开发文档(我就直接截图了):

看似很简单,每一步解释的都很清晰,但是弄到程序里后没有反应,为什么呢,感觉百度的开发说明对新手挺不友好的,在网络上查了好多之后,才可以确定要在第二部中加入如下的代码:

第一个if是没有用的,只是为了检查是否进入了这个监听里。

然后在对result判断,在result为”no_error”时才会进行路线规划。虽然不知道最后一个if里好多都是啥意思(有时间再查),但是没有这些是不行的。

这个时候就会发现”DrivingRouteOverlay”是红色的,于是乎,我这初学者的大脑就想到了是不是没有路线规划的包,然后在下载开发包那里我就把所有功能都点上了,还是不行,又百度,发现了一个绘制overlay的问题,参考以下链接:

https://blog.csdn.net/chentravelling/article/details/51190543?locationNum=3&fps=1#commentBox

按照上面这个网址的方法,在csdn上下载了两个文件并添加进去之后,还是不行,发现这个回答是两年之前的了,然后我把示例代码下载下来,在示例代码中找到了这两个文件夹:

一共包含三个Demo,在第一个中复制的:

就是这两个文件夹,全部复制到自己的工程中后,再次运行,还是不行,是一个marker为空的问题,根据代码中提到的icon名,定位到Demo中该icon所在的位置,就是这个:

然后将debug中的所有文件复制到工程中对应的位置,然后出现了一个新的问题“权限鉴定未完成,查找并测试一番后,发现是第五步发起规划检索不应直接放在onCreate里,发起规划检索过早是不行滴(是要等程序反应过来?),于是放在了一个按钮的监听里就能用了。

 

就是这些了,成功之后感觉也不过如此,但是需要学习的还有很多,对于新手,网上的很多示例说的感觉都不太明白,希望这个能够帮到大家。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要调用百度地图路线规划,你需要先注册百度地图开发者账号,并且创建一个应用,然后获取应用的AK(Access Key)。 接下来,你可以使用百度地图提供的Web API或者SDK进行路线规划。以下是一个使用百度地图Web API进行路线规划的示例代码: ```java import java.net.URLEncoder; import java.util.List; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class BaiduMapRoutePlanning { public static void main(String[] args) throws Exception { // 百度地图开发者AK String ak = "your_ak_here"; // 起点经纬度 String origin = "40.057406,116.296439"; // 终点经纬度 String destination = "39.908749,116.397491"; // 请求URL String url = "http://api.map.baidu.com/direction/v2/driving?origin=" + URLEncoder.encode(origin, "UTF-8") + "&destination=" + URLEncoder.encode(destination, "UTF-8") + "&ak=" + ak; // 创建HttpClient CloseableHttpClient httpClient = HttpClients.createDefault(); try { // 创建HttpGet HttpGet httpGet = new HttpGet(url); // 发送请求并获得响应 CloseableHttpResponse response = httpClient.execute(httpGet); try { // 解析响应内容 String content = EntityUtils.toString(response.getEntity()); System.out.println(content); } finally { response.close(); } } finally { httpClient.close(); } } } ``` 上面的代码,我们使用了Apache HttpClient库来发送HTTP请求,并且将返回的JSON格式数据打印到控制台上。你需要将`your_ak_here`替换成你自己的百度地图开发者AK。 如果你想使用百度地图SDK进行路线规划,可以参考百度地图官方文档的示例代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值