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