当前位置: 首页 > news >正文

充电宝项目中集成地图地址解析功能梳理

文章目录

  • MongoDB数据库
    • 引入pom依赖
    • 配置yaml配置文件
    • 参考POJO
    • XLocationRepository
    • service服务方法
  • 腾讯地图接口
    • 申请api key
    • 配置api key
    • 启动类配置RestTemplate
    • 控制层
    • 服务层

MongoDB数据库

  • MongoDB对应经纬度的查询具体很好的支持.

引入pom依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

配置yaml配置文件

  • 填写mongodb的连接信息,注意数据库需要提前创建
spring:data:mongodb:host: ipport: 27017database: share #指定操作的数据库

参考POJO

@Data
@Schema(description = "x位置")
public class xLocation
{@Schema(description = "id")@Idprivate String id;@Schema(description = "id")private Long xId;@Schema(description = "经纬度")private GeoJsonPoint location;@Schema(description = "创建时间")private Date createTime;
}

XLocationRepository

@Repository
public interface XLocationRepository extends MongoRepository<XLocation, String> {XLocation getByXId(Long xId);
}

service服务方法

@Transactional(rollbackFor = Exception.class)
@Override
public boolean savex(X x) {//同步站点位置信息到MongoDBXLocation xLocation = new XLocation();xLocation.setStationId(x.getId());xLocation.setLocation(new GeoJsonPoint(x.getLongitude().doubleValue(), x.getLatitude().doubleValue()));xLocation.setCreateTime(new Date());xLocationRepository.save(xLocation);return True;
}@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateStation(X x) {String provinceName = regionService.getNameByCode(x.getProvinceCode());String cityName = regionService.getNameByCode(x.getCityCode());String districtName = regionService.getNameByCode(x.getDistrictCode());station.setFullAddress(provinceName + cityName + districtName + station.getAddress());this.updateById(x);//同步站点位置信息到MongoDBStationLocation stationLocation = stationLocationRepository.getByStationId(x.getId());stationLocation.setLocation(new GeoJsonPoint(x.getLongitude().doubleValue(), x.getLatitude().doubleValue()));stationLocationRepository.save(xLocation);return true;
}

腾讯地图接口

申请api key

  • 腾讯位置服务端API文档
  1. 开通地图服务:开通地图服务,首先你要访问腾讯位置服务的官网,然后注册新用户并且登陆。
  2. 控制台 − > 应用管理 − > 我的应用 − > 创建应用 控制台->应用管理 ->我的应用 ->创建应用 控制台>应用管理>我的应用>创建应用
    在这里插入图片描述
  3. 配置应用:创建好应用之后,编辑应用,在弹窗中,把WebService设置成“域名白名单”,然后填写小程序APPID。
    在这里插入图片描述
  4. 账号额度:腾讯位置服务给开发者提供免费的调用额度,对于开发者来说是足够用。

在这里插入图片描述

配置api key

tencent:map:key: PYOBZ-Y6ZRZ-HMZXP-ZTMES-****-****

启动类配置RestTemplate

@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}

控制层

@Tag(name = "地图接口管理")
@RestController
@RequestMapping("/map")
public class MapController extends BaseController
{@Autowiredprivate IMapService mapService;@Operation(summary = "根据经纬度计算详细地址")@GetMapping("/calculateLatLng/{keyword}")public AjaxResult calculateLatLng(@PathVariable String keyword){return success(mapService.calculateLatLng(keyword));}}

服务层

public interface IMapService {JSONObject calculateLatLng(String keyword);
}
@Slf4j
@Service
@SuppressWarnings({"unchecked", "rawtypes"})
public class MapServiceImpl implements IMapService {@Autowiredprivate RestTemplate restTemplate;@Value("${tencent.map.key}")private String key;@Overridepublic JSONObject calculateLatLng(String keyword) {String url = "https://apis.map.qq.com/ws/geocoder/v1/?address={address}&key={key}";Map<String, String> map = new HashMap<>();map.put("address", keyword);map.put("key", key);JSONObject response = restTemplate.getForObject(url, JSONObject.class, map);if (response.getIntValue("status") != 0) {throw new ServiceException("地图解析异常");}//返回第一条最佳线路JSONObject result = response.getJSONObject("result");System.out.println(result.toJSONString());return result.getJSONObject("location");}}

相关文章:

  • [特殊字符] 大模型微调实战:通过 LoRA 微调修改模型自我认知 [特殊字符]✨
  • L2-013 红色警报
  • 【专题刷题】双指针(二)
  • 带你从入门到精通——知识图谱(六. 知识融合)
  • 半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)
  • 零基础上手Python数据分析 (15):DataFrame 数据排序与排名 - 快速定位关键数据
  • 【leetcode hot 100 136】只出现一次的数字
  • openlayer的基本使用(区域绘制、点线绘制、手动绘制轨迹)
  • 【LaTeX】Misplaced alignment tab character . ^^I
  • 如何下载免费地图数据?
  • GKI 介绍
  • C++算法(9):数组作为函数参数,注意事项与实践
  • 【C++算法】61.字符串_最长公共前缀
  • 利用 Python 和 AI 技术创作独特的图像艺术作品
  • Flutter 与原生通信
  • SAP系统交货已完成标识
  • Redis(一) - Redis安装教程(Windows + Linux)
  • 数据结构与算法入门 Day 0:程序世界的基石与密码
  • 前端ES6基本语法,以及前端项目模板vue-admin-template和后端进行对接(跨域问题的解决)
  • 如何解除Excel只读状态?4种方法全解析
  • 企业做网站需要什么/旺道seo优化软件
  • wordpress子目录 多站点/360seo
  • wordpress中添加登陆页面/淘宝seo搜索引擎优化
  • 厦门市住宅建设办公室网站/常见的网络营销策略都有哪些
  • 做wow宏的网站/国外网站怎么推广
  • 有赞商城官网登录/seo推广效果怎么样