高德地图地址解析经纬度以及经纬度解析地址
简述:通过地址解析出经纬度,以及根据经纬度解析出地址。
官方文档:https://lbs.amap.com/api/webservice/guide/api/georegeo
具体实现步骤:
1、 申请Web服务API类型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;}}
高德地图地址解析经纬度以及经纬度解析地址相关推荐
- uniapp 之 使用高德地图的方法将经纬度转为地址
目录 前言 第一步 第二步 第三步 前言 因项目上的需要,需定位显示自己的位置 我之前一直坚持只使用 uniapp 内置的map属性去完成,却没成想,还是要依赖于高德地图才能将经纬度转为地址,之前也看 ...
- python百度地图api经纬度_Python调用百度地图和高德地图API批量获取国内城市地址经纬度坐标...
1 数据准备 经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文 一共347个城市 由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取 ...
- Vue Cli4 使用高德地图定位 获取当前经纬度信息以及周边定位
以上是最终效果图 下面开始代码分享 第一步 在index,html引入高德地图模块 ` <!-- 高德地图 --><script type="text/javascript ...
- 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码
最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品. 定位好办,直接用高德地图搞定.有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以.或者可以直接调用高德的定位组件. 但是 ...
- 高德地图点击获取经纬度并标记
官网api: https://lbs.amap.com/api/javascript-api/summary 引入js: <script type="text/javascript&q ...
- iOS之高德地图定位偏移以及经纬度之间的转换
高德地图.百度地图以及CLLocationManager等地图的定位功能,从而得到的经纬度坐标会有些偏差,比如系统的CLLocationManager定位得到的是世界标准地理坐标(WGS-84).高德 ...
- 高德地图 搜索店名获取经纬度
有啥问题加QQ:3053916151 <!doctype html> <html lang="zh-CN"><head><meta cha ...
- 高德地图地理码和经纬度转化(latlng和latlonpoint)
1. geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener(this); 重写他的on ...
- reactjs中使用高德地图计算两个经纬度之间的距离
第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...
- Android开发:集成高德地图实现定位、检索周边地址
需求 1.后台传给我们一个经纬度,然后需要我们在地图上显示出来 2.当我们点击地图的时候进入到第二个界面,实现当前位置的定位,并且检索周边的商家地址,点击后将选中的地址回传,并显示,而我们上传给后台的 ...
最新文章
- 致远协同软件手机版让移动办公不再是梦想
- python 动态属性
- WEB服务器 - Apache、Nnginx、Lighttpd的比较和择优(转)
- 平面设计 前端_我如何在5个月内从平面设计师过渡到前端开发人员
- 淘宝开发平台知识点一,入门指南
- HDOJ--2112--
- 海康Ehome协议服务端搭建
- php_字符串按汉字拆分,php分割中文字符串
- mysql case when like_mysql 中casewhen用法
- oracle 字符串日期转指定格式日期,Oracle和Sql 日期格式与字符串格式相互转换
- 100 个常见的 PHP 面试题和答案分享
- Firefox 不知道如何打开此地址,因为协议 (javascrpit) 未和任何程序关联.
- 好听的音乐---飛魚樂園音樂專輯(Orchid Island)
- CAN 数据帧,远程帧,错误帧,以及出错重连
- 从PC到Mac —— 写给Mac新新手的入门教程
- 【数据结构与算法】之深入解析“铺瓷砖”的求解思路与算法示例
- 浅谈border-radius对border的影响
- Android 8.0 华为手机 桌面应用图标显示圆形适配方案
- 下载redhat4.8的方法
- markdown字体大小设置_markdown中数学公式字体大小的方法
热门文章
- parallelStream数据丢失问题
- 联想 缺少计算机所需的介质驱动程序,u盘安装win10显示缺少介质驱动最佳解决方法...
- 给函数取一个“好”的名字
- Delphi的日期时间格式
- 骑士CMSgetshell复现
- 销量持续下跌涨价或许会让苹果业绩雪上加霜
- linux自动备份oracle数据库并上传到备份服务器 脚本实现(转)
- Java+spring基于ssm的基于SSM的高校奖学金助学金管理系统
- Salesforce中国区或将解散!一代CRM巨头退出中国市场?
- java gwt开发_java – 如何启动GWT超级开发模式