使⽤腾讯地图接⼝,计算汽车⾏驶距离或者步⾏⾏驶距离
没有什么需要导⼊的包,都是jdk⾃带包包,哦,json要⾃⼰导⼊哦。
使⽤maven的话
<!-- json -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib-ext-spring</artifactId>
<version>1.0.2</version>
</dependency>
放进去⽣成下就好了,别跟我说maven仓库都没配置不会⾃动下载,怎么配我不管哈
第⼀步 先创建⼀个⼯具类(我喜欢吧腾讯所有的api接⼝都做成⼀个⼯具类,个⼈喜欢\(^o^)/~)
public class TencentMapAPIUtils {
//访问腾讯地图接⼝KEY
private static final String KEY = 腾讯平台注册获取;
/**
* 计算腾讯地图距离
* @param max ⼏个终点
* (经度与纬度⽤英⽂逗号分隔,坐标间⽤英⽂分号分隔)
* @param to 终点(可以传⼊多个终点坐标,格式:lat,lng;
* (经度与纬度⽤英⽂逗号分隔,坐标间⽤英⽂分号分隔)
* 注意:本服务⽀持单起点到多终点,或多起点到单终点,from和to参数仅可有⼀个为多坐标)
* 例如:传⼊22.566939,114.072762;22.540940,114.061432;22.556635,114.086151;22.518266,114.068813
* @return 距离
*/
public static Double[] getLocation(int max,String from,String to) {
Double[] distances = new Double[max];
//请求路径
String getURL = "apis.map.qq/ws/distance/v1/";
//计算⽅式:driving(驾车)、walking(步⾏)默认:driving
String mode ="driving";
//返回格式:⽀持JSON/JSONP,默认JSON (⾮必填项)
//String output = "";
//JSONP⽅式回调函数 (⾮必填项)
//String callback = "";
//请求路径
String urlString =getURL+"?mode="+mode+"&from="+from+"&to="+to+"&key="+KEY;
//接收腾讯回传的地址解析结果
String result = "";
try {
URL url = new URL(urlString);致胜油耗
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
// 腾讯地图使⽤GET
哈弗m2报价
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStream(), "UTF-8"));
String line;
// 获取地址解析结果
while ((line = in.readLine()) != null) {
result += line + "\n";
result += line + "\n";
System.out.println(result);
}
in.close();
} catch (Exception e) {
}
// 转JSON格式
JSONObject jsonObject = JSONObject.fromObject(result).getJSONObject("result");
//elements是[](数组格式)所以使⽤JSONArray获取
JSONArray adInfo = JSONArray("elements");
//for数组
for (int j = 0; j < adInfo.size(); j++) {
JSONObject jsonObject2 = JSONObject(j);
//获取距离(获取到的是m为单位)
String distance = String("distance");
double distanceD = Double.valueOf(distance);
//转化为km
distanceD = distanceD / 1000;
distances[j] = distanceD;
}
return distances;
}
}
第⼆步 我是直接到controller 层调⽤该⼯具(写好了⼯具不就是⽤来调⽤的么,你们有跟好的返回⽅式就⽤⾃⼰的咯,反正我穿double,不准说我\(^o^)/~)
/**
* 查询所有福特福克斯2012款
*
* @return
*/
@RequestMapping(value = "", method = RequestMethod.GET)自驾车
public ResponseEntity<List<Store>> index(String fromStart) {
//从数据库读取出来的List,怎么查我就不说了吧,这已经是不能再基础的东西了,我是jpa⾃带的查询⽅法 List<Store> stores = storeService.findAll();
//获取⾦纬度拼接⼀段
String[] ary = new String[stores.size()];
for (int i = 0;i<stores.size();i++){
Store (i);
//纬度
String lat = Latitude();
//经度
String lng = Longitude();
ary[i]=lat+","+lng;
}
//拼接数组
StringBuffer sb = new StringBuffer();
//如果终点经纬度只有⼀个值就不做 ; 区分
if(ary.length > 1) {
for (int i = 0; i < ary.length; i++) {
if(i>0)
sb.append(";"+ary[i].trim());
}
}else
sb.append(ary[0]);
LOGGER.info("拼接出来的to:"+sb.toString());山东省二手车
Double[] kms = Location(stores.size(),String());
汽车打蜡视频//存⼊store的km
for (int i = 0;i<stores.size();i++){
<(i).setKm(kms[i]);
}
return ResponseEntity.ok().body(stores);
}
已经写的很简单了,没有可能看不懂得吧。
发布评论