简述:通过地址解析出经纬度,以及根据经纬度解析出地址。

官方文档:https://lbs.amap.com/api/webservice/guide/api/georegeo

具体实现步骤:

1、 申请Web服务API类型Key ;

申请完key之后在yml配置文件中配置key

map:key: 申请的key

2、注入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;}}

高德地图地址解析经纬度以及经纬度解析地址相关推荐

  1. uniapp 之 使用高德地图的方法将经纬度转为地址

    目录 前言 第一步 第二步 第三步 前言 因项目上的需要,需定位显示自己的位置 我之前一直坚持只使用 uniapp 内置的map属性去完成,却没成想,还是要依赖于高德地图才能将经纬度转为地址,之前也看 ...

  2. python百度地图api经纬度_Python调用百度地图和高德地图API批量获取国内城市地址经纬度坐标...

    1 数据准备 经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文 一共347个城市 由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取 ...

  3. Vue Cli4 使用高德地图定位 获取当前经纬度信息以及周边定位

    以上是最终效果图 下面开始代码分享 第一步 在index,html引入高德地图模块 ` <!-- 高德地图 --><script type="text/javascript ...

  4. 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码

    最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品. 定位好办,直接用高德地图搞定.有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以.或者可以直接调用高德的定位组件. 但是 ...

  5. 高德地图点击获取经纬度并标记

    官网api: https://lbs.amap.com/api/javascript-api/summary 引入js: <script type="text/javascript&q ...

  6. iOS之高德地图定位偏移以及经纬度之间的转换

    高德地图.百度地图以及CLLocationManager等地图的定位功能,从而得到的经纬度坐标会有些偏差,比如系统的CLLocationManager定位得到的是世界标准地理坐标(WGS-84).高德 ...

  7. 高德地图 搜索店名获取经纬度

    有啥问题加QQ:3053916151 <!doctype html> <html lang="zh-CN"><head><meta cha ...

  8. 高德地图地理码和经纬度转化(latlng和latlonpoint)

    1. geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener(this); 重写他的on ...

  9. reactjs中使用高德地图计算两个经纬度之间的距离

    第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...

  10. Android开发:集成高德地图实现定位、检索周边地址

    需求 1.后台传给我们一个经纬度,然后需要我们在地图上显示出来 2.当我们点击地图的时候进入到第二个界面,实现当前位置的定位,并且检索周边的商家地址,点击后将选中的地址回传,并显示,而我们上传给后台的 ...

最新文章

  1. 致远协同软件手机版让移动办公不再是梦想
  2. python 动态属性
  3. WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)
  4. 平面设计 前端_我如何在5个月内从平面设计师过渡到前端开发人员
  5. 淘宝开发平台知识点一,入门指南
  6. HDOJ--2112--
  7. 海康Ehome协议服务端搭建
  8. php_字符串按汉字拆分,php分割中文字符串
  9. mysql case when like_mysql 中casewhen用法
  10. oracle 字符串日期转指定格式日期,Oracle和Sql 日期格式与字符串格式相互转换
  11. 100 个常见的 PHP 面试题和答案分享
  12. Firefox 不知道如何打开此地址,因为协议 (javascrpit) 未和任何程序关联.
  13. 好听的音乐---飛魚樂園音樂專輯(Orchid Island)
  14. CAN 数据帧,远程帧,错误帧,以及出错重连
  15. 从PC到Mac —— 写给Mac新新手的入门教程
  16. 【数据结构与算法】之深入解析“铺瓷砖”的求解思路与算法示例
  17. 浅谈border-radius对border的影响
  18. Android 8.0 华为手机 桌面应用图标显示圆形适配方案
  19. 下载redhat4.8的方法
  20. markdown字体大小设置_markdown中数学公式字体大小的方法

热门文章

  1. parallelStream数据丢失问题
  2. 联想 缺少计算机所需的介质驱动程序,u盘安装win10显示缺少介质驱动最佳解决方法...
  3. 给函数取一个“好”的名字
  4. Delphi的日期时间格式
  5. 骑士CMSgetshell复现
  6. 销量持续下跌涨价或许会让苹果业绩雪上加霜
  7. linux自动备份oracle数据库并上传到备份服务器 脚本实现(转)
  8. Java+spring基于ssm的基于SSM的高校奖学金助学金管理系统
  9. Salesforce中国区或将解散!一代CRM巨头退出中国市场?
  10. java gwt开发_java – 如何启动GWT超级开发模式