java 高德地图获取公里数
时间: 2024-01-31 08:02:45 浏览: 168
要获取两个地理位置之间的距离(公里数),可以使用高德地图的Web API服务。可以使用Java的HttpURLConnection或者OkHttp等网络库向高德地图的Web API发送请求,然后解析返回的JSON数据。
以下是一个简单的Java代码示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class DistanceCalculator {
private static final String BASE_URL = "http://restapi.amap.com/v3/distance?key=<your_key>&origins=%s&destination=%s&type=1";
public static double getDistance(String origin, String destination) throws IOException {
String url = String.format(BASE_URL, URLEncoder.encode(origin, "UTF-8"), URLEncoder.encode(destination, "UTF-8"));
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
return parseDistance(response.toString());
}
private static double parseDistance(String response) {
// 解析返回的JSON数据,获取距离值
// 假设JSON数据格式为 {"status":"1","info":"OK","results":[{"distance":"1234"}]}
String distanceStr = response.substring(response.indexOf("\"distance\":\"") + "\"distance\":\"".length());
distanceStr = distanceStr.substring(0, distanceStr.indexOf("\""));
return Double.parseDouble(distanceStr) / 1000; // 返回公里数
}
}
上面的代码中,BASE_URL是高德地图Web API的请求地址,其中<your_key>
需要替换为你的高德地图开发者密钥。getDistance
方法接收两个地理位置(例如"116.481028,39.989643")作为参数,发送HTTP GET请求获取JSON数据,并解析其中的距离值。最终返回公里数。注意需要处理异常,并关闭网络连接和IO流。
相关推荐













