Java 批量获取地址间距离工具(支持中转站)

Java 批量获取地址间距离工具(支持中转站)攻略

该工具是基于高德地图API和Java语言开发的,可以快速获取多个地址间的距离信息,并且支持中转站计算。以下是使用该工具的详细步骤。

1. 获取高德地图API Key

首先需要到高德地图开发者平台注册一个开发者账号,并创建应用获取API Key。在创建应用时,需要注意选择正确的服务类型,本工具使用的是“WEB服务”,并开通“地图API-距离测量API”和“地图API-批量请求接口”两个服务。

2. 下载并配置工具

该工具的源码托管在GitHub上,可以通过以下链接下载:https://github.com/leowang721/batch-distance。下载完成后,将代码导入至Java开发环境(推荐使用IDEA),并将获取到的API Key配置在代码中。

private static final String AMAP_KEY = "your_amap_key"; // 将your_amap_key替换为你的API Key

3. 配置输入文件

在工具代码中,需要将输入文件的路径配置正确。输入文件是一个CSV格式的地址列表,每行一条记录,包含如下信息:

地址名称,所在城市,所属区县,所在省份,详细地址

其中,前四个字段用于进行地图API的地理编码,获取该地址的经纬度。详细地址字段可选,如果有该信息则可以增加地理编码的准确度。例如:

北京大学,北京市,海淀区,北京市,海淀区颐和园路5号北京大学

4. 执行工具

将工具代码执行即可生成输出文件,其中包含输入的地址间的距离信息。如果需要计算中转站,则需要在执行时传入中转站地址列表并进行相应的设置。例如:

List<List<Address>> allBatchAddresses = new ArrayList<>();
allBatchAddresses.add(batchAddresses1);
allBatchAddresses.add(batchAddresses2); // batchAddresses1和batchAddresses2是包含地址信息的List对象
double maxMiles = 30; // 最大里程为30公里
int maxCount = 4; // 最大站点数为4个
Map<String, Map<String, List<Address>>> results = BatchDistance.getDistanceBetweenBatches(addrsMap, allBatchAddresses, maxMiles, maxCount, AMAP_KEY);

示例1:计算两个城市之间的距离

输入文件如下:

北京市东城区故宫,北京市,东城区,北京市,北京市东城区景山前街4号故宫博物院
上海市黄浦区外滩,上海市,黄浦区,上海市,上海市黄浦区外滩

执行代码后,输出结果如下:

北京市东城区故宫 <==> 上海市黄浦区外滩: 1201.15 km

示例2:计算三个城市之间的距离(包含中转站计算)

输入文件如下:

北京市东城区故宫,北京市,东城区,北京市,北京市东城区景山前街4号故宫博物院
上海市黄浦区外滩,上海市,黄浦区,上海市,上海市黄浦区外滩
杭州市西湖区,杭州市,西湖区,浙江省,浙江省杭州市西湖区留下大道555号

中转站城市列表如下:

杭州滨江区

执行代码后,输出结果如下:

北京市东城区故宫 <==> 杭州滨江区 <==> 上海市黄浦区外滩: 2137.41 km
北京市东城区故宫 <==> 杭州市西湖区 <==> 上海市黄浦区外滩: 2397.03 km
上海市黄浦区外滩 <==> 杭州市西湖区 <==> 北京市东城区故宫: 2411.99 km

至此,Java 批量获取地址间距离工具(支持中转站)的攻略已经介绍完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 批量获取地址间距离工具(支持中转站) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Mybatis 自动映射(使用需谨慎)

    Mybatis 自动映射 (Auto-mapping) 是指Mybatis在进行 SQL 查询结果和Java对象映射时,自动查找Java对象对应属性名和SQL查询结果列名相同的项,并进行赋值。自动映射虽然能够简化开发工作,但也存在一些需要注意的地方,使用时需谨慎。 自动映射的配置方式 方式一: 自动映射全局开启 Mybatis提供了全局配置自动映射的方式,即…

    Java 2023年5月19日
    00
  • Java创建子线程的两种方法

    当我们需要在Java程序中创建一个新的线程时,我们有两种主要的方式。 方法一:通过继承Thread类创建线程 创建一个继承自Thread类的新类。 public class MyThread extends Thread { @Override public void run() { // 新线程执行的代码 } } 在该类中重写run()方法,将需要新线程执…

    Java 2023年5月18日
    00
  • Java web过滤器验证登录防止未登录进入界面

    Java web过滤器可以用来实现登录验证,防止未登录用户进入系统内部页面,增强系统的安全性。下面是一个完整的攻略。 1.设计登录页面 首先需要设计一个用户登录的页面。用户在页面中输入用户名和密码。 2.实现用户验证 在Java web中,可以通过session来保存用户的信息。用户在登录后,将用户名和密码存储在session中。 3.编写过滤器 编写一个过…

    Java 2023年6月15日
    00
  • 如何在 Linux 上搭建 java 部署环境(安装jdk/tomcat/mysql) + 将程序部署到云服务器上的操作)

    下面是在 Linux 上搭建 Java 部署环境并将程序部署到云服务器的完整攻略,包括安装 JDK、Tomcat 和 MySQL,以及部署示例程序。 1. 安装 JDK 1.1 下载 JDK 首先,进入 Oracle 官网下载页面,找到适合你系统的 JDK 版本,下载压缩包。 1.2 安装 JDK 将下载的压缩包上传到 Linux 服务器上,解压到指定目录(…

    Java 2023年5月19日
    00
  • Java实现一个顺序表的完整代码

    要实现一个顺序表,首先需要定义一个数据结构,用于存储数据,并提供相应的操作方法。以下是一个Java实现顺序表的完整代码的攻略。 定义数据结构 定义一个类ArrayList作为顺序表的数据结构。这个类具有以下属性和方法: size:表示顺序表的元素个数。 capacity:表示顺序表的最大容量。 elements:表示顺序表的存储空间,即一个数组。 Array…

    Java 2023年5月19日
    00
  • 解决struts2 拦截器修改request的parameters参数失败的问题

    首先,我们需要了解为什么拦截器无法修改参数。这是因为Struts 2在请求参数提交后,将参数作为只读值放到了ValueStack中,而拦截器只能获取到ValueStack中原有的参数值,而不能修改ValueStack中的参数。 要解决这个问题,我们需要使用Struts2提供的params拦截器。这个拦截器会在Action执行之前拦截请求,并将请求参数转换为可…

    Java 2023年5月20日
    00
  • Spring-webflux 响应式编程的实例详解

    Spring-webflux 响应式编程的实例详解 Spring-webflux 是 Spring Framework 5.0 中引入的新特性,它提供了一种基于响应式编程模型的 Web 开发方式。本文将详细讲解 Spring-webflux 响应式编程的实例详解,包括如何创建响应式 Web 应用程序、如何使用响应式路由、如何使用响应式数据访问等。 创建响应式…

    Java 2023年5月18日
    00
  • 程序计数器的作用是什么?

    程序计数器(Program Counter)是一种在 Java 虚拟机中使用的寄存器,用于存储当前线程正在执行的字节码指令的地址。程序计数器是线程私有的,每个线程都有自己的程序计数器。程序计数器不会发生 OutOfMemoryError 异常。 以下是程序计数器的完整使用攻略: 记录当前线程执行的字节码指令地址 在 Java 虚拟机中,程序计数器用于记录当前…

    Java 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部