两个地址之间的距离测量(使用高德API)

您所在的位置:网站首页 高德地图骑行记录怎么查 两个地址之间的距离测量(使用高德API)

两个地址之间的距离测量(使用高德API)

2024-07-17 17:06:30| 来源: 网络整理| 查看: 265

首先:

通过高德开放者平台http://lbs.amap.com/,注册一个开发者账号,获得一个KEY(调用接口时需要使用该KEY) 注册完成后如下图,在我的应用里面创建,key的名称自己取,key值自动生成 key的名称自己取,key值自动生成阅读高德web 服务API接口的文档高德API接口文档概述 距离测量在 高德API路径规划里 https://lbs.amap.com/api/webservice/guide/api/direction 在这里插入图片描述

然后: 贴代码吧

这里有直接通过经纬度获取距离的 也有输入一个地址获取距离的

请求参数里面有一个type(API接口里有介绍) 0:直线距离 1:驾车导航距离(仅支持国内坐标)。 必须指出,当为1时会考虑路况,故在不同时间请求返回结果可能不同。 此策略和驾车路径规划接口的 strategy=4策略基本一致,策略为“ 躲避拥堵的路线,但是可能会存在绕路的情况,耗时可能较长 ” 若需要实现高德地图客户端效果,可以考虑使用驾车路径规划接口 3:步行规划距离(仅支持5km之间的距离)

这里采用的是type=1,即驾车导航距离

import com.google.gson.Gson; 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; import java.util.List; import java.util.Map; public class NewGetDistance { private static final String key = "你申请的key"; public static void main(String[] args){ //111111根据经纬度查询距离的 //注意:高德最多取小数点后六位 //格式: 经度,纬度 String origin = "108.960747"+","+"34.266451";//陕西省西安市新城区 String destination = "117.150738"+","+"39.138203";//天津市南开区 String distance = distance(origin, destination); System.out.println(distance); //222222根据地址查询距离的 String start = "陕西省西安市新城区"; String end = "天津市南开区"; String startLonLat = getLonLat(start);//获取到开始地址的经纬度 String endLonLat = getLonLat(end);//获取到达地址的经纬度 String distan = distance(startLonLat,endLonLat); System.out.println(distan); } /** * 高德地图WebAPI : 行驶距离测量 */ public static String distance(String origins,String destination) { int type = 1;//type=1,即驾车导航距离 String url = "http://restapi.amap.com/v3/distance?" + "origins="+origins +"&destination="+destination +"&type="+type +"&key="+ key; //这里用的Gson,也可以用下面的JSON,都试了一下 Gson gson = new Gson(); Map map = new Gson().fromJson(getLoadJson(url),Map.class); List list=(List)map.get("results"); Map map1 = (Map) list.get(0); String distance = map1.get("distance"); System.out.println(distance); // JSONObject jsonobject = JSONObject.fromObject(loadJson(url)); // System.out.println(jsonobject.toString()); // JSONArray resultsArray = jsonobject.getJSONArray("results"); // JSONObject distanceObject = resultsArray.getJSONObject(0); // String resdistance = distanceObject.getString("distance"); return distance; } /** * Java http 请求 获取结果 */ public static String getLoadJson (String url) { StringBuilder json = new StringBuilder(); try { //下面那条URL请求返回结果无中文,可不转换编码格式 URL urlObject = new URL(url); URLConnection uc = urlObject.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); String inputLine = null; while ( (inputLine = in.readLine()) != null) { json.append(inputLine); } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return json.toString(); } /** * 根据给的地址获得经纬度信息 * @param address * @return */ private static String getLonLat(String address){ //返回输入地址address的经纬度信息, 格式是 经度,纬度 String queryUrl = "http://restapi.amap.com/v3/geocode/geo?key="+key+"&address="+address; String queryResult = getLoadJson(queryUrl); //高德接口返回的是JSON格式的字符串 //这里也可以用Gson接 //JSONObject是Map,可以通过key访问值 //JSONArray是List,可以通过索引访问值 JSONObject jo = new JSONObject().fromObject(queryResult); JSONArray ja = jo.getJSONArray("geocodes"); return new JSONObject().fromObject(ja.getString(0)).get("location").toString(); } }

注意:这里的 import net.sf.json.JSONArray; import net.sf.json.JSONObject; 这两个包的依赖,注意版本号

net.sf.json-lib json-lib 2.4 jdk15

Gson还是很好用的,Gson对象有toJson和fromJson两个方法,toJson是对象转字符串,fromJson是字符串转对象。附上Gson的使用

记录自己写的过程



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭