使用高德API接口查询两个地址之间的距离
来源:互联网 发布:网络暴力 英语 编辑:程序博客网 时间:2024/06/03 14:57
要点:
1. 通过高德开放者平台http://lbs.amap.com/,注册一个开发者账号,获得一个KEY(查询接口需要使用该KEY)
2. 阅读高德web 服务API接口的文档 http://lbs.amap.com/api/webservice/summary/
3. 可将编程过程分解过两步
- 获取一个地址的经度、纬度信息
- 通过两个地址的经纬度,查询距离
上代码:
import net.sf.json.JSONArray;import net.sf.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class getDistance { public static void main(String[] args){ String start = "浙江省杭州市西湖区"; String end = "郑州市金水区"; String startLonLat = getLonLat(start); String endLonLat = getLonLat(end); System.out.println(startLonLat); System.out.println(endLonLat); Long dis = getDistance(startLonLat,endLonLat); System.out.println(dis); } private static String getLonLat(String address){ //返回输入地址address的经纬度信息, 格式是 经度,纬度 String queryUrl = "http://restapi.amap.com/v3/geocode/geo?key=你申请到的KEY&address="+address; String queryResult = getResponse(queryUrl); //高德接品返回的是JSON格式的字符串 JSONObject jo = new JSONObject().fromObject(queryResult); JSONArray ja = jo.getJSONArray("geocodes"); return new JSONObject().fromObject(ja.getString(0)).get("location").toString(); } private static Long getDistance(String startLonLat, String endLonLat){ //返回起始地startAddr与目的地endAddr之间的距离,单位:米 Long result = new Long(0); String queryUrl = "http://restapi.amap.com/v3/distance?key=你申请到的KEY&origins="+startLonLat+"&destination="+endLonLat; String queryResult = getResponse(queryUrl); JSONObject jo = new JSONObject().fromObject(queryResult); JSONArray ja = jo.getJSONArray("results"); result = Long.parseLong(new JSONObject().fromObject(ja.getString(0)).get("distance").toString()); return result;// return queryResult; } 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(); }}
运行结果:
通过高德地图手机APP查询两地之间的距离,验证一下,如下图所示,发现确实是943公里左右的距离。
0 0
- 使用高德API接口查询两个地址之间的距离
- 获取2个地址之间的距离(高德API)
- python计算两个地址之间的距离
- Android实现两个地点距离的查询(使用高德地图)
- 基于sqlserver 实现查询两个经纬度之间的距离
- php中使用地图的两个坐标之间的距离
- 使用scala计算两个Gps点之间的距离
- 查询手机号 IP地址信息的API接口整理
- 在百度地图API开发中已知两个点之间的经纬度坐标计算其距离
- 在百度地图API开发中已知两个点之间的经纬度坐标计算其距离
- 高德地图计算两点之间的距离java+html
- 转载:高德地图计算2点之间的距离
- 如何获取两个算子之间的距离
- 获得两个GPS坐标之间的距离
- 计算两个地理坐标之间的距离
- 计算两个经纬度之间的距离
- 计算两个坐标点之间的距离
- 怎么计算两个经纬度之间的距离
- Throwing cards away I 卡牌游戏 UVA 10935
- VNC秘钥(转)
- java读取config.properties配置文件
- [BZOJ1069][SCOI2007]最大土地面积(凸包+旋转卡壳)
- volley的重试机制及错误处理机制
- 使用高德API接口查询两个地址之间的距离
- 使用greenlet如何实现Python中的并发?
- Mac OS X下Maven的安装与配置
- 面试心得与总结—BAT、网易、蘑菇街
- RDMA & RoCE
- Android中的静态变量
- 8张图理解Java
- Hibernate相关配置文件内容详解
- unity 绘制Bezier曲线