一、添加依赖

            <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 通过地址获取经纬度 - 高德地图的更多相关文章

  1. java根据地址获取百度API经纬度

    java根据地址获取百度API经纬度(详细文档) public void getLarLng(String address) throws Exception { String ak = " ...

  2. 百度地图api根据地址获取经纬度

    package com.haiyisoft.cAssistant;import java.io.BufferedReader;import java.io.IOException; import ja ...

  3. PHP CURL根据详细地址获取腾讯地图经纬度

    <?php $address = "广东省广州市天河区"; $point = getPoint($address); var_dump($point);//输出经纬度 /** ...

  4. 在H5页面内通过地址调起高德地图实现导航

    项目中用到的一个功能是要通过点击地址来实现打开地图app实现地址导航. 如下图: 实现思路就是在H5页面内通过点击marker图标然后进行当前位置与页面上地址的路程规划与导航. 由于项目中用到的是高德 ...

  5. Python 根据地址获取经纬度

    方法一: 使用Geopy包 : https://github.com/geopy/geopy   (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...

  6. Python 根据地址获取经纬度及求距离

    方法一: 使用Geopy包 : https://github.com/geopy/geopy   (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...

  7. 利用百度API(js),怎样通过地址获取经纬度

    根据经纬度找到具体地址:http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥如:http:// ...

  8. JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法

    首先要注册百度地图API. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的“API控制台”,点击,创建应用. 应用类型选择:“浏览器端”, ...

  9. Java获取IP地址,IpUtils工具类,Java IP地址获取

    ================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ import ...

随机推荐

  1. 谈谈iOS获取调用链

    本文由云+社区发表 iOS开发过程中难免会遇到卡顿等性能问题或者死锁之类的问题,此时如果有调用堆栈将对解决问题很有帮助.那么在应用中如何来实时获取函数的调用堆栈呢?本文参考了网上的一些博文,讲述了使用 ...

  2. Flask入门之完整项目搭建

    一.创建虚拟环境 1,新建虚拟环境 cmd中输入:mkvirtualenv 环境名 2,在虚拟环境安装项目运行所需要的基本模块 pip install flask==0.12.4 pip instal ...

  3. 消息队列_MSMQ(1)简单了解

    MSMQ (微软消息队列)   MSMQ 百度百科 MicroSoft Message Queuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一 ...

  4. [PHP]命令执行函数的区别

    <?php $cmd="ps aux|grep php-fpm"; $res=exec($cmd,$o); var_dump($o);//数组形式返回,每行一个元素 var_ ...

  5. JAVA-HashMap实现原理

    一.HashMap实现原理 1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.它允许存入null值和null键.它不保证存入元素的顺序与操作顺序一致,主要是不保证元素的顺序 ...

  6. Miller Rabin算法详解

    何为Miller Rabin算法 首先看一下度娘的解释(如果你懒得读直接跳过就可以反正也没啥乱用:joy:) Miller-Rabin算法是目前主流的基于概率的素数测试算法,在构建密码安全体系中占有重 ...

  7. Mapbox浅析(快速入门Mapbox)

    1.是什么? Mapbox是一个可以免费创建并定制个性化地图的网站. 2.了解一些基本东西 常见的 mapbox.js和mapbox-gl.js的异同点? 相同点: 1.都是由Mapbox公司推出的免 ...

  8. Python进阶之函数式编程

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. SVN拉取后撤销,恢复未拉取之前的状态

    在做项目的时候,一不小心将服务器上的代码覆盖了本地的代码,本来可以使用log查看svn上的历史列表,然后选中某个选项,右键,点击revert to this vision来使代码恢复到任意一个版本. ...

  10. C# 发送电子邮件源码片段

    下面代码内容是关于C# 发送电子邮件片段的代码,应该对各位有所用途. using System;using System.Web;using System.Web.Mail;public class ...