地理转换
经纬度转详细地址
这里使用的是百度API来实现,官网地址
步骤一:首先创建一个应用,为了得到一把AK
- 名字可以随便命令,能通过就行,下面勾选都是默认的
- 设置白名单
- 提交
- 提交完成后,就有了属于我们自己的AK(突突突…)
步骤二:找到官网所需要的服务文档(我们这里是经纬度转地址)
- 点击开发文档—> Web服务Api
- 点击正/逆地理编码—>全球逆地理编码—>点击服务文档
在这里我们就能看到这个地址的具体描述与使用,我们直接复制这个地址,来看一下效果
主要把AK替换成自己之前创建好的
详细地址转经纬度
这里使用的是高德API来实现,官网地址
步骤一:创建一个应用,高德需要在应用的基础上在创建AK
步骤二:应用创建上之后,创建一个AK
- 名字符合规范就行,同样的选择web服务,白名单可设置可不设置
- 提交
- 提交完成后,就有了属于我们自己的AK
步骤三:找到官网所需要的服务文档(我们这里是地址转经纬度)
- 点击开发支持—> Web服务API
- 点击地理/逆地理编码—>地理编码
在这里我们就能看到这个地址的具体描述与使用,下面是有直接可以运行的案例
代码实现
GdMapUtils.java
package com.myqxin.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.myqxin.pojo.ReverseMap;
import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
/**
* @author: myqxin
* @Desc:
* @create: 2021-07-14 17:39
**/
public class GdMapUtils {
public static final String GD_URL = "https://restapi.amap.com/v3/geocode/geo?key=6e673d1e15a949dda845f29d8861624d&address=";
public static final String BD_URL = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=MlbWGTcovSCcHEVBvft8vSnTi4M1mclF&output=json&coordtype=wgs84ll&location=";
/**
* 根据地址获取经纬度信息
*/
public static String getGeographyInfoByAddress(String address) {
String result = "";
try {
// 把字符串转换为URL请求地址
URL url = new URL(GD_URL + address);
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 连接会话
connection.connect();
// 获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
// 循环读取流
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();// 关闭流
connection.disconnect();// 断开连接
result = sb.toString();
return result;
// HashMap map = JSON.parseObject(sb.toString(), HashMap.class);
// Object geocodes = map.get("geocodes");
// String strip = StringUtils.strip(geocodes.toString(), "[]");
// ReverseMap reverseMap = JSONObject.parseObject(strip, ReverseMap.class);
} catch (Exception e) {
e.printStackTrace();
System.out.println("失败!");
}
return result;
}
/**
* 根据经纬度获取地址信息
*/
public static String getGeographyInfoByLongLati(String longLati) {
String result = "";
try {
// 把字符串转换为URL请求地址
URL url = new URL(BD_URL + longLati);
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 连接会话
connection.connect();
// 获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
// 循环读取流
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();// 关闭流
connection.disconnect();// 断开连接
result = sb.toString();
return result;
// HashMap map = JSON.parseObject(sb.toString(), HashMap.class);
// Object geocodes = map.get("geocodes");
// String strip = StringUtils.strip(geocodes.toString(), "[]");
// ReverseMap reverseMap = JSONObject.parseObject(strip, ReverseMap.class);
} catch (Exception e) {
e.printStackTrace();
System.out.println("失败!");
}
return result;
}
public static void main(String[] args) {
String result = getGeographyInfoByAddress("北京市朝阳区阜通东大街6号");
String s = getGeographyInfoByLongLati("36.634167,101.773056");
System.out.println(s);
System.out.println(result);
}
}
以上就是代码的使用方式,最后的结果,我们是需要处理的,自己来哦!!!