| | |
| | | if (reGeoCode.size() > 0) { |
| | | // 在regeocode中拿到 formatted_address 具体位置 |
| | | String formatted = reGeoCode.get("formatted_address").toString(); |
| | | JSONObject addressComponent = reGeoCode.getJSONObject("addressComponent"); |
| | | String adcode = addressComponent.getString("adcode"); |
| | | String s = convertToCityCode(adcode); |
| | | System.err.println("====s"); |
| | | return Result.succeed(formatted, "地址获取成功!"); |
| | | |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | public static Result<String> getCityCode(String longitude, String latitude) { |
| | | String url; |
| | | try { |
| | | url = "http://restapi.amap.com/v3/geocode/regeo?output=JSON&location=" + longitude + "," + latitude |
| | | + "&key=" + GAO_DE_KEY + "&radius=0&extensions=base"; |
| | | // 高德接口返回的是JSON格式的字符串 |
| | | String queryResult = getResponse(url); |
| | | if (ObjectUtils.isNull(queryResult)) { |
| | | return Result.failed("查询结果为空"); |
| | | } |
| | | // 将获取结果转为json 数据 |
| | | JSONObject obj = JSONObject.parseObject(queryResult); |
| | | if (obj.get(GaoDeEnum.STATUS.getCode()).toString().equals(GaoDeEnum.INT_ONE.getCode())) { |
| | | // 如果没有返回-1 |
| | | JSONObject reGeoCode = obj.getJSONObject(GaoDeEnum.RE_GEO_CODE.getCode()); |
| | | if (reGeoCode.size() > 0) { |
| | | // 在regeocode中拿到 formatted_address 具体位置 |
| | | String formatted = reGeoCode.get("formatted_address").toString(); |
| | | JSONObject addressComponent = reGeoCode.getJSONObject("addressComponent"); |
| | | String adcode = addressComponent.getString("adcode"); |
| | | String s = convertToCityCode(adcode); |
| | | System.err.println("====s"); |
| | | return Result.succeed(s, "地址获取成功!"); |
| | | |
| | | } else { |
| | | return Result.failed("未找到相匹配的地址!"); |
| | | } |
| | | } else { |
| | | return Result.failed("请求错误!"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return Result.failed("系统未知异常,请稍后再试"); |
| | | } |
| | | } |
| | | |
| | | public static String convertToCityCode(String districtCode) { |
| | | // 确保输入的字符串长度至少为6位 |
| | | if (districtCode.length() >= 6) { |
| | | // 截取前6位中的前4位作为城市代码 |
| | | return districtCode.substring(0, 4) + "00"; |
| | | } else { |
| | | throw new IllegalArgumentException("Invalid district code length: " + districtCode); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 功能描述: 根据两个定位点的经纬度算出两点间的距离 |
| | | * 经纬度格式为: 经度,纬度 |