欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 充电宝项目中集成地图地址解析功能梳理

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

2025/4/19 12:03:36 来源:https://blog.csdn.net/yang2330648064/article/details/147283907  浏览:    关键词:充电宝项目中集成地图地址解析功能梳理

文章目录

  • 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");}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词