From 76f4b32326c77b6a3b6742ab5d72f0b02320b62f Mon Sep 17 00:00:00 2001 From: liyj <1003249715@qq.com> Date: Tue, 10 Sep 2024 20:33:10 +0800 Subject: [PATCH] 1、小程序提交,根据经纬度查询问题属地 --- dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectJSDTO.java | 37 ++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapAddrDTO.java | 65 ++++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapUtils.java | 88 ++++++++--- dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/web/SyRegionWebController.java | 18 ++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java | 23 ++ dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java | 33 ++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java | 10 + dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectSaveDTO.java | 27 +++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 21 + dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/CauseSelectJSDTO.java | 4 dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/QueAddrBaseDTO.java | 61 +++++++ dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/client/SyregionClientController.java | 78 +++++++++ 12 files changed, 433 insertions(+), 32 deletions(-) diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/QueAddrBaseDTO.java b/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/QueAddrBaseDTO.java new file mode 100644 index 0000000..39c2ab2 --- /dev/null +++ b/dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/QueAddrBaseDTO.java @@ -0,0 +1,61 @@ +package cn.huge.module.sys.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @title: 问题属地数据传输类 + * @description: 问题属地数据传输类 + * @company:hugeinfo + * @author: liyj + * @time: 2024-09-09 14:31:22 + * @version 1.0.0 + */ +@Data +public class QueAddrBaseDTO { + + /** + * 问题属地省 + */ + private String queProv; + + /** + * 问题属地省名称 + */ + private String queProvName; + + /** + * 问题属地市 + */ + private String queCity; + + /** + * 问题属地市名称 + */ + private String queCityName; + + /** + * 问题属地区 + */ + private String queArea; + + /** + * 问题属地区名称 + */ + private String queAreaName; + + /** + * 问题属地街道 + */ + private String queRoad; + + /** + * 问题属地街道名称 + */ + private String queRoadName; + +} diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java index c5abb2e..c45dfbe 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java @@ -18,8 +18,10 @@ import cn.huge.module.mediate.constant.CaseBaseConstsEnum; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.draft.service.CasedraftInfoService; +import cn.huge.module.mediate.constant.CaseProcessBaseConstsEnum; import cn.huge.module.mediate.dto.WechatBindCaseDTO; import cn.huge.module.sys.dto.FileIdTypeInfoBaseDTO; +import cn.huge.module.sys.dto.QueAddrBaseDTO; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -557,9 +559,10 @@ caseInfo.setLat(pointXY.getLat()+""); caseInfo.setLng(pointXY.getLon()+""); } - //todo case_ref生成、case_title生成 + //todo case_title生成 + caseInfo.setCaseRef(utilsClient.createCaseRef()); // 为了演示先兼容小程序没属地问题,写死属地 - if (caseInfo.getQueProvName() == null) { + if (ObjectUtils.isEmpty(caseInfo.getQueProv())) { caseInfo.setQueProv("19"); caseInfo.setQueProvName("广东"); caseInfo.setQueCity("1601"); @@ -569,6 +572,16 @@ caseInfo.setQueRoad("62857"); caseInfo.setQueRoadName("新市街道"); + // 根据经纬度查询问题属地 +// QueAddrBaseDTO queAddrBaseDTO = sysClient.getQueAddrByBaiduiLngLat(caseInfo.getLng(), caseInfo.getLat()); +// caseInfo.setQueProv(queAddrBaseDTO.getQueProv()); +// caseInfo.setQueProvName(queAddrBaseDTO.getQueProvName()); +// caseInfo.setQueCity(queAddrBaseDTO.getQueCity()); +// caseInfo.setQueCityName(queAddrBaseDTO.getQueCityName()); +// caseInfo.setQueArea(queAddrBaseDTO.getQueArea()); +// caseInfo.setQueAreaName(queAddrBaseDTO.getQueAreaName()); +// caseInfo.setQueRoad(queAddrBaseDTO.getQueRoad()); +// caseInfo.setQueRoadName(queAddrBaseDTO.getQueRoadName()); } caseInfoUnfold.setId(caseInfo.getId()); caseInfoUnfold.setCreateTime(nowDate); @@ -580,10 +593,6 @@ caseInfo.setPagents(pagents.toString()); caseInfo.setDefendants(defendants.toString()); caseInfo.setDagents(dagents.toString()); - caseInfo.setInfoProcess(1); - caseInfo.setInfoProcessName("待受理"); - caseInfo.setProcess(1); - caseInfo.setProcessName("来访登记"); this.saveOrUpdate(caseInfo); // 启动工作流-自动调度流程 diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java index 50e903a..743978f 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/SysClient.java @@ -65,4 +65,14 @@ */ @PostMapping("/api/client/fileRelate/removeFileRelate") ReturnBO removeFileRelate(@RequestBody FileTypeTermsDTO fileTypeTermsDTO); + + /** + * 根据百度地图经纬度获取街道 + * @url {ctx}/api/client/syRegion/getQueAddrByBaiduiLngLat + * @param lng 经度 + * @param lat 维度 + * @return + */ + @GetMapping("/api/client/syRegion/getQueAddrByBaiduiLngLat") + ReturnBO getQueAddrByBaiduiLngLat(@RequestParam(value = "lng") String lng, @RequestParam(value = "lat") String lat); } diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java index 459cb2b..a11d3f1 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java @@ -6,6 +6,7 @@ import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.client.api.SysClient; +import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.sys.dto.*; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; @@ -146,4 +147,26 @@ log.error("service方法[SysClientImpl.removeFileRelate]请求异常:"+e, e); } } + + /** + * 根据百度地图经纬度获取街道 + * @url {ctx}/api/client/syRegion/getTownByBaiduiLngLat + * @param lng 经度 + * @param lat 维度 + * @return + */ + public QueAddrBaseDTO getQueAddrByBaiduiLngLat(String lng, String lat){ + QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO(); + try{ + ReturnBO returnBo = sysClient.getQueAddrByBaiduiLngLat(lng, lat); + if (ReturnConsts.OK == returnBo.getCode()){ + if (ObjectUtils.isNotEmpty(returnBo.getData())){ + queAddrBaseDTO = objectMapper.convertValue(returnBo.getData(), QueAddrBaseDTO.class); + } + } + }catch (Exception e){ + log.error("service方法[SysClientImpl.getQueAddrByBaiduiLngLat]调用异常:"+e, e); + } + return queAddrBaseDTO; + } } diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/client/SyregionClientController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/client/SyregionClientController.java new file mode 100644 index 0000000..04481ea --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/client/SyregionClientController.java @@ -0,0 +1,78 @@ +package cn.huge.module.kind.controller.client; + +import cn.huge.base.common.utils.ObjectUtils; +import cn.huge.base.common.utils.ReturnFailUtils; +import cn.huge.base.common.utils.ReturnSucUtils; +import cn.huge.module.kind.domain.po.SyRegion; +import cn.huge.module.kind.service.SyRegionService; +import cn.huge.module.sys.dto.QueAddrBaseDTO; +import cn.huge.module.utils.BaiduMapAddrDTO; +import cn.huge.module.utils.BaiduMapUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** + * @title: 地域表接口api-web端 + * @description: 地域表接口api-web端 + * @company: hugeinfo + * @author: wangwh + * @time: 2024-09-04 16:48:57 + * @version: 1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/api/client/syRegion") +public class SyregionClientController { + + @Autowired(required = false) + private HttpServletRequest request; + + @Autowired + private SyRegionService service; + + /** + * 根据百度地图经纬度获取街道 + * @url {ctx}/api/client/syRegion/getQueAddrByBaiduiLngLat + * @param lng 经度 + * @param lat 维度 + * @return + */ + @GetMapping("/getQueAddrByBaiduiLngLat") + public Object getQueAddrByBaiduiLngLat(@RequestParam(value = "lng") String lng, @RequestParam(value = "lat") String lat) { + try { + QueAddrBaseDTO syRegionBaseDTO = new QueAddrBaseDTO(); + BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(lng, lat, BaiduMapUtils.coordtype_bd09ll); + if (ObjectUtils.isNotEmpty(baiduMapAddrDTO)) { + QueryWrapper<SyRegion> syRegionQueryWrapper = new QueryWrapper<>(); + // 查询省 + syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getProvince()); + SyRegion province = service.getOne(syRegionQueryWrapper); + syRegionBaseDTO.setQueProv(province.getId()); + syRegionBaseDTO.setQueProvName(province.getName()); + // 查询市 + syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getCity()); + SyRegion city = service.getOne(syRegionQueryWrapper); + syRegionBaseDTO.setQueProv(city.getId()); + syRegionBaseDTO.setQueProvName(city.getName()); + // 查询区 + syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getDistrict()); + SyRegion district = service.getOne(syRegionQueryWrapper); + syRegionBaseDTO.setQueProv(district.getId()); + syRegionBaseDTO.setQueProvName(district.getName()); + // 查询街道 + syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getTown()); + SyRegion town = service.getOne(syRegionQueryWrapper); + syRegionBaseDTO.setQueProv(town.getId()); + syRegionBaseDTO.setQueProvName(town.getName()); + } + return ReturnSucUtils.getRepInfo(syRegionBaseDTO); + } catch (Exception e) { + return ReturnFailUtils.getRepInfo(); + } + } +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/web/SyRegionWebController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/web/SyRegionWebController.java index 8bcaf3a..67ff856 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/web/SyRegionWebController.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/controller/web/SyRegionWebController.java @@ -2,6 +2,8 @@ import cn.huge.base.common.utils.ReturnFailUtils; import cn.huge.base.common.utils.ReturnSucUtils; +import cn.huge.module.kind.domain.dto.RegionSelectJSDTO; +import cn.huge.module.kind.domain.dto.RegionSelectSaveDTO; import cn.huge.module.kind.domain.po.SyRegion; import cn.huge.module.kind.service.SyRegionService; import com.google.common.collect.Maps; @@ -167,4 +169,20 @@ } } + /** + * js数据入库 + * @url {ctx}/api/web/syRegion/saveByJS + * @param regionSelectJSDTO 实体对象 + * @return Object + */ + @PostMapping("/saveByJS") + public Object saveByJS(@RequestBody RegionSelectSaveDTO regionSelectJSDTO) { + try { + service.webSaveByJSTree(regionSelectJSDTO.getRegionList(), regionSelectJSDTO.getStartLevel()); + return ReturnSucUtils.getRepInfo(); + } catch (Exception e) { + return ReturnFailUtils.getRepInfo(); + } + } + } diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/CauseSelectJSDTO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/CauseSelectJSDTO.java index 7bbbe02..117cfa4 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/CauseSelectJSDTO.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/CauseSelectJSDTO.java @@ -5,8 +5,8 @@ import java.util.List; /** - * @title: 前端下拉框js数据传输类 - * @description: 前端下拉框js数据传输类 + * @title: 前端下拉框js数据传输类-纠纷类型 + * @description: 前端下拉框js数据传输类-纠纷类型 * @company: hugeinfo * @author: liyj * @time: 2022-02-23 14:19:43 diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectJSDTO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectJSDTO.java new file mode 100644 index 0000000..d2ab0db --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectJSDTO.java @@ -0,0 +1,37 @@ +package cn.huge.module.kind.domain.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @title: 前端下拉框js数据传输类-地域 + * @description: 前端下拉框js数据传输类-地域 + * @company: hugeinfo + * @author: liyj + * @time: 2022-02-23 14:19:43 + * @version: 1.0.0 + */ +@Data +public class RegionSelectJSDTO { + + /** + * 名称 + */ + private String label; + + /** + * 代码 + */ + private String value; + + /** + * 父级编号,根级默认root + */ + private String parentId; + + /** + * 子数组 + */ + private List<RegionSelectJSDTO> children; +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectSaveDTO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectSaveDTO.java new file mode 100644 index 0000000..b693405 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/domain/dto/RegionSelectSaveDTO.java @@ -0,0 +1,27 @@ +package cn.huge.module.kind.domain.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @title: 前端下拉框js数据传输类-地域 + * @description: 前端下拉框js数据传输类-地域 + * @company: hugeinfo + * @author: liyj + * @time: 2022-02-23 14:19:43 + * @version: 1.0.0 + */ +@Data +public class RegionSelectSaveDTO { + + /** + * 开始层级 + */ + private int startLevel; + + /** + * js数据 + */ + private List<RegionSelectJSDTO> regionList; +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java index b6ba9d6..6ec8322 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java @@ -5,8 +5,10 @@ import cn.huge.base.common.utils.IdUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.kind.dao.mapper.SyRegionMapper; +import cn.huge.module.kind.domain.dto.RegionSelectJSDTO; import cn.huge.module.kind.domain.po.SyRegion; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @@ -17,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; +import javax.swing.plaf.synth.Region; import java.util.Date; import java.util.List; import java.util.Map; @@ -130,4 +133,34 @@ } } + /** + * 递归保存树形结构 + * @param childrenList + * @param level + */ + public void webSaveByJSTree(List<RegionSelectJSDTO> childrenList, int level){ + try{ + Date nowDate = new Date(); + for (RegionSelectJSDTO regionSelectJSDTO: childrenList){ + SyRegion region = new SyRegion(); + region.setId(regionSelectJSDTO.getValue()); + region.setKind(level); + region.setName(regionSelectJSDTO.getLabel()); + region.setLevel(level); + region.setParentId(regionSelectJSDTO.getParentId()); + region.setCreateTime(nowDate); + region.setUpdateTime(nowDate); + this.saveOrUpdate(region); + if (CollectionUtils.isNotEmpty(regionSelectJSDTO.getChildren())) { + this.webSaveByJSTree(regionSelectJSDTO.getChildren(), level + 1); + } + } + }catch (Exception e){ + log.error("[SyRegionService.webSaveByJSTree]调用失败,异常信息:"+e, e); + throw new ServiceException("SyRegionService.webSaveByJSTree", e); + } + } + + + } diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapAddrDTO.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapAddrDTO.java new file mode 100644 index 0000000..e9a64a1 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapAddrDTO.java @@ -0,0 +1,65 @@ +package cn.huge.module.utils; + +import cn.huge.module.sy.domain.po.SyTimeLimit; +import lombok.Data; + +/** + * @title: 百度地图逆地理编码地址对象 + * @description: 百度地图逆地理编码地址对象 + * @company: hugeinfo + * @author: wangwh + * @time: 2024-09-04 16:48:57 + * @version: 1.0.0 + * @see SyTimeLimit + */ +@Data +public class BaiduMapAddrDTO { + + /** + * 识别地址 + */ + String formattedAddress; + + /** + * 国家 + */ + String country; + + /** + * 省 + */ + String province; + + /** + * 市 + */ + String city; + + /** + * 区 + */ + String district; + + /** + * 街道 + */ + String town; + + /** + * 路 + */ + String street; + + /** + * 路 + */ + String streetNumber; + + /** + * 拼接地址 + */ + String addr; + + + +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapUtils.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapUtils.java index 0cd9f35..b6727af 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapUtils.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/utils/BaiduMapUtils.java @@ -3,6 +3,7 @@ import cn.huge.base.common.utils.HttpClientUtils; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; import java.util.Map; @@ -14,20 +15,32 @@ * @time: 2021-11-05 16:51:48 * @version: 1.0.0 */ +@Slf4j public class BaiduMapUtils { public static void main(String[] args) { - + getAddrByLngLat("113.26315561512126", "23.205265046387627", coordtype_bd09ll); } + + /** + * 坐标类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) + */ + public static final String coordtype_bd09ll = "bd09ll"; + public static final String coordtype_bd09mc = "bd09mc"; + public static final String coordtype_gcj02ll = "gcj02ll"; + public static final String coordtype_wgs84ll = "wgs84ll"; /** * 百度APi参数 */ - private static final String ak = "roXW0LCjo6P9EnCZgG3O1cBlMzvyapwY"; private static final String output = "json"; private static final String callback = "showLocation"; private static final String geocodingUrl = "http://api.map.baidu.com/geocoding/v3/"; private static final String reverseUrl = "http://api.map.baidu.com/reverse_geocoding/v3/"; + // 李泳江个人账号:15602261488 + private static final String ak = "roXW0LCjo6P9EnCZgG3O1cBlMzvyapwY"; + // 王文豪个人账号 +// private static final String ak = "FhiGsV7BFaHGhGy2IeyPq7GuOiFroQ4o"; /** * 根据详细地址获取坐标值 @@ -35,13 +48,9 @@ * @param city 城市 * @return JSONObject */ - public static JSONObject getCoordinateByAddr(String address, String city) { - Map<String, String> parameters = Maps.newHashMap(); - parameters.put("ak", ak); - parameters.put("address", address); - parameters.put("city", city); - parameters.put("output", output); - String json = HttpClientUtils.httpGet(geocodingUrl, parameters, null); + public static JSONObject getLngLatByAddr(String address, String city) { + String url = geocodingUrl+"?ak="+ak+"&output="+output+"&address="+address+"&city="+city; + String json = HttpClientUtils.httpGet(url, null, null); JSONObject data = JSONObject.parseObject(json); JSONObject data1=JSONObject.parseObject(data.getString("result")); @@ -52,25 +61,56 @@ /** * 根据坐标获取详细地址 - * @param lat 经度 - * @param lng 维度 + * @param lng 经度 + * @param lat 维度 * @param coordtype 坐标类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) * @return String */ - public static String getAddressByCoordinate(String lat, String lng, String coordtype) { - Map<String, String> parameters = Maps.newHashMap(); - parameters.put("location", lat + "," + lng); - parameters.put("coordtype", coordtype); - parameters.put("ak", ak); - parameters.put("output", output); - String json = HttpClientUtils.httpGet(reverseUrl, parameters, null); + public static BaiduMapAddrDTO getAddrByLngLat(String lng, String lat, String coordtype) { + BaiduMapAddrDTO baiduMapAddrDTO = new BaiduMapAddrDTO(); + try{ + String location = lat + "," + lng; + String url = reverseUrl+"?ak="+ak+"&output="+output+"&location="+location+"&coordtype="+coordtype; + String json = HttpClientUtils.httpGet(url, null, null); - JSONObject data = JSONObject.parseObject(json); - JSONObject data1=JSONObject.parseObject(data.getString("result")); - JSONObject data2=JSONObject.parseObject(data1.getString("addressComponent")); - String district =data2.getString("district"); - System.out.println(district); - return district; + JSONObject data = JSONObject.parseObject(json); + JSONObject data1 =JSONObject.parseObject(data.getString("result")); + // 识别地址 + String formattedAddress = data1.getString("formatted_address"); + System.out.println("识别地址:"+formattedAddress); + // 解析地址组成部分 + JSONObject addressComponent=JSONObject.parseObject(data1.getString("addressComponent")); + // 国家 + String country = addressComponent.getString("country"); + // 省 + String province = addressComponent.getString("province"); + // 市 + String city = addressComponent.getString("city"); + // 区 + String district = addressComponent.getString("district"); + // 街道 + String town = addressComponent.getString("town"); + // 路 + String street = addressComponent.getString("street"); + // 号 + String streetNumber = addressComponent.getString("street_number"); + // 拼接地址 + String addr = country+province+city+district+town+street+streetNumber; + System.out.println("拼接地址:"+addr); + + baiduMapAddrDTO.setFormattedAddress(formattedAddress); + baiduMapAddrDTO.setCountry(country); + baiduMapAddrDTO.setProvince(province); + baiduMapAddrDTO.setCity(city); + baiduMapAddrDTO.setDistrict(district); + baiduMapAddrDTO.setTown(town); + baiduMapAddrDTO.setStreet(street); + baiduMapAddrDTO.setStreetNumber(streetNumber); + baiduMapAddrDTO.setAddr(addr); + }catch (Exception e){ + log.error("[BaiduMapUtils.getAddrByLngLat]调用失败,异常信息:"+e, e); + } + return baiduMapAddrDTO; } } -- Gitblit v1.8.0