我已在高德地图创建应用,帮我查找一个使用高德地图api批量获取经纬度坐标的java程序编写的demo,可以多思考一会尽量简洁
时间: 2024-05-17 22:16:37 浏览: 99
你可以尝试使用高德地图Web服务API中的地理编码API来实现批量获取经纬度坐标的功能。以下是一个使用Java编写的示例代码:
```java
import java.io.*;
import java.net.*;
import java.util.*;
public class Geocoder {
private static final String API_KEY = "your_api_key"; // 替换为你的API Key
private static final String API_URL = "https://restapi.amap.com/v3/geocode/geo";
public static void main(String[] args) {
List<String> addresses = Arrays.asList(
"北京市海淀区上地十街10号",
"北京市朝阳区东四环北路1号",
"广东省深圳市南山区科技园科技南路",
"上海市黄浦区人民广场"
);
for (String address : addresses) {
try {
String url = String.format("%s?key=%s&address=%s", API_URL, API_KEY, URLEncoder.encode(address, "UTF-8"));
String response = sendGetRequest(url);
String[] parts = response.split(",");
if (parts.length >= 2 && parts[0].equals("1")) {
String location = parts[1];
System.out.printf("%s -> %s\n", address, location);
} else {
System.out.printf("%s -> ERROR\n", address);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static String sendGetRequest(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
}
```
在上述代码中,我们使用了Java的URL和HttpURLConnection类来发送HTTP GET请求,并解析返回的JSON格式数据。其中,API_KEY是你在高德地图开放平台申请的API Key,addresses是一个包含多个地址的字符串列表。你可以将需要批量查询的地址添加到这个列表中,并运行该程序,即可输出每个地址对应的经纬度坐标。
需要注意的是,由于高德地图Web服务API使用的是HTTP协议,因此你需要配置Java虚拟机的网络代理或者关闭防火墙,以确保程序能够正确访问API。
阅读全文