Java 通过地址获取经纬度 - 高德地图
一、添加依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0</version>
</dependency>
二、请求工具类
import com.github.kevinsawicki.http.HttpRequest; /**
* 请求工具类
*/
public class RequestUtils { private static final String DEFAULT_CHARSET = "utf-8";
private static final int CONNECT_TIMEOUT_IN_MIS_SECOND = 10000;
private static final int READ_TIMEOUT_IN_MIS_SECOND = 30000; public static RequestResult getJsonText(String url, String charset) {
if (charset == null) charset = DEFAULT_CHARSET;
HttpRequest request = HttpRequest.get(url).connectTimeout(CONNECT_TIMEOUT_IN_MIS_SECOND).readTimeout(READ_TIMEOUT_IN_MIS_SECOND);
String body = request.body(charset);
int code = request.code();
request.disconnect();
return new RequestResult(code, body);
} }
三、返回接收类
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter; /**
* 高德地图返回工具类
*/
@Getter
@Setter
@AllArgsConstructor
public class RequestResult { /** 状态码 */
private int code; /** 返回body */
private String body; }
四、高德地图工具类
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* 获取高德地图经纬度
*
* @author lixin.saho
*/
public class MapUtils {
private static String API = "http://restapi.amap.com/v3/geocode/geo?key=<key>&s=rsv3&address=<address>"; private static String KEY = "key"; private static Pattern pattern = Pattern.compile("\"location\":\"(\\d+\\.\\d+),(\\d+\\.\\d+)\""); static {
init();
} private static void init() {
// System.out.println("高德地图工具类初始化");
// System.out.println("api: {}"+API);
// System.out.println("key: {}"+KEY);
API = API.replaceAll("<key>", KEY);
} private static double[] getLatAndLonByAddress(String address) {
try {
String requestUrl = API.replaceAll("<address>", URLEncoder.encode(address, "UTF-8"));
RequestResult requestResult = RequestUtils.getJsonText(requestUrl, null);
if (200 != requestResult.getCode()) {
return null;
}
requestUrl = requestResult.getBody();
if (requestUrl != null) {
Matcher matcher = pattern.matcher(requestUrl);
if (matcher.find() && matcher.groupCount() == 2) {
double[] gps = new double[2];
gps[0] = Double.valueOf(matcher.group(1));
gps[1] = Double.valueOf(matcher.group(2));
return gps;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
double[] aaa = MapUtils.getLatAndLonByAddress("广东省深圳市福田区天安数码城创业科技大厦一期");
for (double cccc : aaa) {
System.out.println(cccc);
}
System.out.println(MapUtils.getLatAndLonByAddress("广东省深圳市福田区天安数码城创业科技大厦一期")); }
五、高德地图的秘钥,及高德地图工具类里的key需要自己申请
Java 通过地址获取经纬度 - 高德地图的更多相关文章
- java根据地址获取百度API经纬度
java根据地址获取百度API经纬度(详细文档) public void getLarLng(String address) throws Exception { String ak = " ...
- 百度地图api根据地址获取经纬度
package com.haiyisoft.cAssistant;import java.io.BufferedReader;import java.io.IOException; import ja ...
- PHP CURL根据详细地址获取腾讯地图经纬度
<?php $address = "广东省广州市天河区"; $point = getPoint($address); var_dump($point);//输出经纬度 /** ...
- 在H5页面内通过地址调起高德地图实现导航
项目中用到的一个功能是要通过点击地址来实现打开地图app实现地址导航. 如下图: 实现思路就是在H5页面内通过点击marker图标然后进行当前位置与页面上地址的路程规划与导航. 由于项目中用到的是高德 ...
- Python 根据地址获取经纬度
方法一: 使用Geopy包 : https://github.com/geopy/geopy (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...
- Python 根据地址获取经纬度及求距离
方法一: 使用Geopy包 : https://github.com/geopy/geopy (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...
- 利用百度API(js),怎样通过地址获取经纬度
根据经纬度找到具体地址:http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥如:http:// ...
- JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
首先要注册百度地图API. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的“API控制台”,点击,创建应用. 应用类型选择:“浏览器端”, ...
- Java获取IP地址,IpUtils工具类,Java IP地址获取
================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ import ...
随机推荐
- 带着萌新看springboot源码13(手写一个自己的starter)
springboot的最强大的就是那些xxxAutoconfiguration,但是这些xxxAutoConfiguration又依赖那些starter,只有导入了这些场景启动器(starter),我 ...
- C++STL模板库关联容器之set/multiset
目录 一丶关联容器简介.set/multiset 二丶演示代码. 一丶关联容器简介.set/multiset 我们的序列容器,底层都是线性表构成的. 比如 vector list deque. 关联容 ...
- 使用 curl 进行 ssl 认证
目录 SSL 认证 认证实现 问题解决 curl不支持 https SSL certificate problem, verify that the CA cert is OK curl: (60) ...
- 二进制安装部署kubernetes集群---超详细教程
本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...
- 【Axios】前端页面使用axios调用后台接口
项目基本情况 前端项目是用vue.js做的,前端起的服务URL:http://localhost:8080/ 后端项目是用Node.js做的,后端起的服务URL:http://localhost:30 ...
- SpringMVC集成rabbitmq:优化秒杀下单环节
前言 上一篇在springboot中基于自动配置集成了rabbitmq.那么回到最初的话题中就是想在秒杀下单环节增加排队机制,从而达到限流的目的. 优化秒杀下单流程 之前是在控制器里拿到客户端请求后直 ...
- Scala(四) —— 集合
一.List var x = List(1,2,3,4) //x:List[Int] = List(1, 2, 3, 4) var y = List("x","y&quo ...
- Identity Server 4 中文文档(v1.0.0)
欢迎来到IdentityServer4 欢迎IdentityServer4 IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架. 它可以 ...
- 【JavaScript】封装实用方法【持续积累】
介绍 主要记录一些平时积累或者常用方法或者小技巧的集合.以便在以后用到还要重复写或者忘记. 还有就是如果遇到好的方法封装值得收藏进行收藏.这里主要是记录一些包含JavaScript的一些积累.没有什么 ...
- Mysql启动时执行文件init-file的使用
可以在配置文件里指定mysql启动以后初始执行的SQL文件, 其语法是: 在[mysqld]下指定: init-file="D:/mysql/test.sql", 后面为具体的s ...