高德地图地址解析经纬度以及经纬度解析地址
生活随笔
收集整理的這篇文章主要介紹了
高德地图地址解析经纬度以及经纬度解析地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡述:通過地址解析出經緯度,以及根據經緯度解析出地址。
官方文檔:https://lbs.amap.com/api/webservice/guide/api/georegeo
具體實現步驟:
1、 申請Web服務API類型Key ;
申請完key之后在yml配置文件中配置key
map:key: 申請的key2、注入key以及url服務地址:
@Component @Data public class MapClientProperties {@Value("${map.key:key}")private String key;@Value("${map.geo-url:https://restapi.amap.com/v3/geocode/geo?parameters}")private String geoUrl;@Value("${map.re-geo-url:https://restapi.amap.com/v3/geocode/regeo?parameters}")private String reGeoUrl;}3、書寫返回的vo類
/*** 地址解析經緯度*/ @Data public class LocationVo {/*** @Date: 2021/5/10* @描述: 緯度*/private BigDecimal lat;/*** @Date: 2021/5/10* @描述: 經度*/private BigDecimal lng;public LocationVo() {}public LocationVo(BigDecimal lng, BigDecimal lat) {this.lng = lng;this.lat = lat;}} /*** 經緯度解析地址*/ @Data public class AddressComponentsVo {/*** @Date: 2021/5/18* @描述: 國家*/private String country;/*** @Date: 2021/5/18* @描述: 省*/private String province;/*** @Date: 2021/5/18* @描述: 市*/private String city;/*** @Date: 2021/5/18* @描述: 區,可能為空字串*/private String district;/*** @Date: 2021/5/18* @描述: 街道,可能為空字串*/private String township;} /*** 精密位置*/ @Data public class AddressRecommendVo {private String formattedAddress;} /*** 經緯度解析地址*/ @Data public class ReGeocodeVo {/*** @Date: 2021/5/27* @描述: 地址部件,address不滿足需求時可自行拼接*/private AddressComponentsVo addressComponent;/*** @Date: 2021/5/27* @描述: 結合知名地點形成的描述性地址,更具人性化特點*/private String formattedAddress;} /*** 高德地圖地址解析經緯度下級回調信息*/ @Data public class GeocodesVo {private String formattedAddress;private String country;private String province;private String city;private String district;private String location;} /*** 公共回調信息*/ @Data public class ResultVo {private String status;private String info;private String infocode;private String count; } /*** */ @Data public class GeoVo extends ResultVo {private List<GeocodesVo> geocodes;} /*** 高德地圖經緯度解析回調*/ @Data public class ReGeoVo extends ResultVo {private ReGeocodeVo regeocode;}4、書寫控制層
/*** 地址解析經緯度/經緯度解析地址*/ @Api(tags = "地址解析經緯度/經緯度解析地址") @RestController @RequestMapping("/map") public class MapClientController {@Autowiredprivate MapClientService mapClientService;/*** 地址解析經緯度* @param address 地址信息* @return*/@ApiOperation("地址解析經緯度")@PostMapping("/resolution")public Result addressResolution(String address) {LocationVo locationVo = mapClientService.addressResolution(address);return Result.successResult(locationVo);}/*** 經緯度解析地址* @param lat 緯度* @param lng 經度* @return*/@ApiOperation("經緯度解析地址")@PostMapping("/resolutionAddress")public Result locationResolution(String lat, String lng) {String componentsVo = mapClientService.gdLocationResolution(lat, lng);return Result.successResult(componentsVo);}}5、書寫接口
/*** 接口*/ public interface MapClientService {/*** 地址解析經緯度* @param address 地址信息* @return*/LocationVo addressResolution(String address);/*** 經緯度解析地址* @param lat 緯度* @param lng 經度* @return*/String locationResolution(String lat, String lng);}6、書寫接口實現類
/*** 接口實現類*/ @Service public class MapClientServiceImpl implements MapClientService {@AutowiredMapClientProperties mapClientProperties;/*** 地址解析經緯度* @param address 地址信息* @return*/@Overridepublic LocationVo addressResolution(String address) {HashMap<String, Object> map = new HashMap<>();map.put("key", mapClientProperties.getKey());map.put("address", address);String s = HttpUtil.get(mapClientProperties.getGeoUrl(), map);GeoVo geoVo = JSONUtil.toBean(s, GeoVo.class);if ("10000".equals(geoVo.getInfocode()) && Integer.parseInt(geoVo.getCount()) > 0) {GeocodesVo geocodesVo = geoVo.getGeocodes().get(0);String[] location = geocodesVo.getLocation().split(",");System.err.println(location[0]);return new LocationVo(new BigDecimal(location[0]), new BigDecimal(location[1]));}ResultException.throwResultException(geoVo.getInfo());return null;}/*** 經緯度解析地址* @param lat 緯度* @param lng 經度* @return*/@Overridepublic ReGeocodeVo locationResolution(String lat, String lng) {HashMap<String, Object> map = new HashMap<>();map.put("key", mapClientProperties.getKey());map.put("location", StrUtil.concat(false, lng, ",", lat));String s = HttpUtil.get(mapClientProperties.getReGeoUrl(), map);ReGeoVo reGeoVo = JSONUtil.toBean(s, ReGeoVo.class);if ("10000".equals(reGeoVo.getInfocode())) {return reGeoVo.getRegeocode();}ResultException.throwResultException(reGeoVo.getInfo());return null;}}總結
以上是生活随笔為你收集整理的高德地图地址解析经纬度以及经纬度解析地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 OpenBSD 系统下的安装PHP
- 下一篇: Pytorch中torch.nn.Dat