import lombok.extern.slf4j.Slf4j;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.Map;
@Slf4j
public class obtainDistance {
private static final String KEY = "**************************";
private static final RestTemplate restTemplate = new RestTemplate();
private static final String BASE_URL = "https://restapi.amap.com/v3/geocode/geo";
private static final String BASE_DISTANCE = "http://restapi.amap.com/v3/distance";
public static void main(String[] args) {
String start = "浙江省杭州市西湖区";
String end = "郑州市金水区";
String startLonLat = regeo(start);
String endLonLat = regeo(end);
Long dis = getDistance(startLonLat, endLonLat);
System.out.println(dis + "=============================");
}
/**
* 获取该地点经纬度
*
* @param address
* @return
*/
public static String regeo(String address) {
String url = BASE_URL + "?key=" + KEY + "&address=" + address;
try {
Map<String, Object> result = restTemplate.getForObject(url, Map.class);
System.out.println(result);
if (result != null) {
List<Map<String, Object>> mapList = (List<Map<String, Object>>) result.get("geocodes");
return mapList.get(0).get("location").toString();
}
return null;
} catch (Exception e) {
log.error("获取经纬度异常", e);
}
return null;
}
public static Integer getDistance(String startLonLat, String endLonLat) {
//返回起始地startAddr与目的地endAddr之间的距离,单位:米
Integer result = 0;
String queryUrl = BASE_DISTANCE + "?key=" + KEY + "&origins=" + startLonLat + "&destination=" + endLonLat;
try {
Map data = restTemplate.getForObject(queryUrl, Map.class);
System.out.println(data);
if (data != null) {
List<Map<String, Object>> mapList = (List<Map<String, Object>>) data.get("results");
result = (Integer) mapList.get(0).get("distance");
return result;
}
} catch (Exception e) {
log.error("获取距离异常", e);
}
return result;
}
}
Java引入高德获取两地之间距离distance
于 2020-09-11 11:11:25 首次发布