【Springboot】——基于百度地图开放平台实现
·

🎼个人主页:【Y小夜】
😎作者简介:一位双非学校的大三学生,编程爱好者,
专注于基础和实战分享,欢迎私信咨询!
🎈热门专栏:🎊【Python,Javaweb,Springboot】
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录
账户注册
首先登入百度地图开发者平台
百度地图-百万开发者首选的地图服务商,提供专属的行业解决方案

分别点击,应用管理——》我的应用——》创建应用

应用类型应该选择服务端

白名单记得要填,不然会不允许通过
可以暂时先填 0.0.0.0/0

文件配置
application.yml配置外卖商家店铺地址和百度地图的AK:

代码开发
改造OrderServiceImpl,注入上面的值
@Value("${sky.shop.address}")
private String shopAddress;
@Value("${sky.baidu.ak}")
private String ak;
编写校验方法
/**
* 检查客户的收货地址是否超出配送范围
* @param address
*/
private void checkOutOfRange(String address) {
Map map = new HashMap();
map.put("address",shopAddress);
map.put("output","json");
map.put("ak",ak);
//获取店铺的经纬度坐标
String shopCoordinate = HttpClientUtil.doGet("https://api.map.baidu.com/geocoding/v3", map);
JSONObject jsonObject = JSON.parseObject(shopCoordinate);
if(!jsonObject.getString("status").equals("0")){
throw new OrderBusinessException("店铺地址解析失败");
}
//数据解析
JSONObject location = jsonObject.getJSONObject("result").getJSONObject("location");
String lat = location.getString("lat");
String lng = location.getString("lng");
//店铺经纬度坐标
String shopLngLat = lat + "," + lng;
map.put("address",address);
//获取用户收货地址的经纬度坐标
String userCoordinate = HttpClientUtil.doGet("https://api.map.baidu.com/geocoding/v3", map);
jsonObject = JSON.parseObject(userCoordinate);
if(!jsonObject.getString("status").equals("0")){
throw new OrderBusinessException("收货地址解析失败");
}
//数据解析
location = jsonObject.getJSONObject("result").getJSONObject("location");
lat = location.getString("lat");
lng = location.getString("lng");
//用户收货地址经纬度坐标
String userLngLat = lat + "," + lng;
map.put("origin",shopLngLat);
map.put("destination",userLngLat);
map.put("steps_info","0");
//路线规划
String json = HttpClientUtil.doGet("https://api.map.baidu.com/directionlite/v1/driving", map);
jsonObject = JSON.parseObject(json);
if(!jsonObject.getString("status").equals("0")){
throw new OrderBusinessException("配送路线规划失败");
}
//数据解析
JSONObject result = jsonObject.getJSONObject("result");
JSONArray jsonArray = (JSONArray) result.get("routes");
Integer distance = (Integer) ((JSONObject) jsonArray.get(0)).get("distance");
if(distance > 5000){
//配送距离超过5000米
throw new OrderBusinessException("超出配送范围");
}
}
然后进行调用就可以了!
优势
-
提升用户体验
- 丰富的地理位置服务:百度地图API提供了地图展示、地理位置查询、路径规划、地理编码等多种功能,这些功能可以极大地丰富Web应用的地理位置服务,提高用户体验。
- 实时性与准确性:通过调用百度地图API,开发者可以实时获取用户的地理位置信息,包括经纬度、省份、城市等,这些信息准确且实时更新,有助于提供更精准的服务。
-
简化开发流程
- 快速集成:SpringBoot作为一款快速开发框架,可以帮助开发人员快速构建Web应用,并集成百度地图API,从而实现地图展示、地理位置查询、路径规划等功能,简化了开发流程。
- 统一响应类:在SpringBoot项目中,可以定义统一的响应类来封装API返回结果,使得代码更加清晰和简洁,便于维护和扩展。
-
提高开发效率
- 减少重复劳动:通过调用百度地图API,开发者可以避免手动编写复杂的地理位置处理逻辑,减少了重复劳动,提高了开发效率。
- 专注于业务逻辑:SpringBoot采用约定大于配置的原则,使得开发人员可以更加专注于业务逻辑的实现,而无需关注复杂的技术细节。
-
增强系统稳定性
- 缓存技术:为了应对网络延迟和API调用频率限制等问题,可以采用缓存技术来存储常用的地理位置数据,从而提高系统的稳定性和性能。
- 错误处理机制:在调用百度地图API时,可以设置合理的错误处理机制,当API调用失败或返回错误数据时,能够及时捕获并处理异常,确保系统的稳定运行。
-
促进技术创新与应用
- 结合新技术:SpringBoot与百度地图API的结合,不仅可以实现基本的地理位置服务,还可以结合其他新技术(如人工智能、机器学习等)进行更高级的地理位置分析和处理,推动技术创新和应用的发展。
- 拓展应用场景:基于百度地图开放平台的实现,可以拓展出更多应用场景,如物流跟踪、智能导航、位置推荐等,为开发者提供更多创新机会。
更多推荐



所有评论(0)