最近上线的签到功能,会出现打不起卡的情况,不在打卡范围内
这是原代码
/**
* 2.经纬度算出两点间距离
* */
private long getDistance(String startLonLat, String endLonLat){
try {
String queryUrl = "http://restapi.amap.com/v3/distance?key="+key+"&origins="+startLonLat+"&destination="+endLonLat;
String queryResult = getResponse(queryUrl);
log.info("调用高德api返回 ---->"+queryResult);
JSONObject job = JSONObject.parseObject(queryResult);
JSONArray ja = job.getJSONArray("results");
JSONObject jobO = JSONObject.parseObject(ja.getString(0));
return Long.parseLong(jobO.get("distance").toString());
}catch (Exception e){
return -1L;
}
}
/**
* 3.发送请求
* */
private static String getResponse(String serverUrl){
//用JAVA发起http请求,并返回json格式的结果
StringBuffer result = new StringBuffer();
try {
URL url = new URL(serverUrl);
URLConnection conn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = in.readLine()) != null){
result.append(line);
}
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result.toString();
}
问题所在
官方api: https://lbs.amap.com/api/webservice/guide/api/direction
就因为少传了一个参数,所以type默认是驾车导航距离
修改后
/**
* 2.经纬度算出两点间距离
* */
private long getDistance(String startLonLat, String endLonLat){
try {
String queryUrl = "http://restapi.amap.com/v3/distance?key="+key+"&type=0&origins="+startLonLat+"&destination="+endLonLat;
String queryResult = getResponse(queryUrl);
log.info("调用高德api返回 ---->"+queryResult);
JSONObject job = JSONObject.parseObject(queryResult);
JSONArray ja = job.getJSONArray("results");
JSONObject jobO = JSONObject.parseObject(ja.getString(0));
return Long.parseLong(jobO.get("distance").toString());
}catch (Exception e){
return -1L;
}
}