java 根据地址返回经纬度
时间: 2023-07-30 22:08:16 浏览: 170
要根据地址返回经纬度,可以通过调用第三方的地图API实现,例如高德地图API、百度地图API等。这些API提供了地址解析接口,可以将地址转换成经纬度坐标。以下是一个使用高德地图API实现的Java代码示例:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import org.json.JSONObject;
public class LocationUtil {
// 高德地图API的key
private static final String KEY = "your_key_here";
/**
* 根据地址获取经纬度
* @param address 地址
* @return 经纬度数组,[0]为经度,[1]为纬度
*/
public static double[] getLocation(String address) throws Exception {
// 对地址进行编码
String encodedAddress = URLEncoder.encode(address, "UTF-8");
// 构造API请求URL
String apiUrl = "https://restapi.amap.com/v3/geocode/geo?key=" + KEY + "&address=" + encodedAddress;
URL url = new URL(apiUrl);
// 发送HTTP请求
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// 解析API返回的JSON数据
String response = reader.readLine();
JSONObject json = new JSONObject(response);
String location = json.getJSONArray("geocodes").getJSONObject(0).getString("location");
String[] coords = location.split(",");
double[] result = { Double.parseDouble(coords[0]), Double.parseDouble(coords[1]) };
// 关闭连接和输入流
reader.close();
connection.disconnect();
return result;
}
}
```
使用时只需要调用`getLocation`方法,传入地址参数即可获取经纬度坐标。需要注意的是,需要在高德地图官网申请API key并替换代码中的`KEY`变量。
阅读全文