使用Leaflet对的SpringBoot天地图路径规划可视化实践-以黄花机场到橘子洲景区为例

使用Leaflet对的SpringBoot天地图路径规划可视化实践-以黄花机场到橘子洲景区为例

目录

前言

一、路径规划需求

1、需求背景

2、技术选型

3、功能简述

二、Leaflet前端可视化

1、内容布局

2、路线展示

3、转折路线展示

三、总结


前言

        在当今数字化与智能化快速发展的时代,路径规划技术已经成为现代交通管理、旅游服务以及城市规划等领域的核心工具之一。无论是日常通勤、商务出行还是旅游观光,高效、准确的路径规划都能显著提升人们的出行体验,优化资源配置,减少时间浪费和能源消耗。随着地理信息系统(GIS)技术的不断进步,结合先进的Web开发框架和地图服务,实现路径规划的可视化已经成为可能。本文旨在探讨如何利用Leaflet这一轻量级、开源的地图JavaScript库,结合Spring Boot框架和天地图服务,构建一个高效、直观的路径规划可视化系统,并以黄花机场到橘子洲景区为例,展示该技术在实际场景中的应用价值。

        在之前的系列博客中,我们曾将介绍了天地图的相关开发资源,也介绍了如何在后台利用Unihttp来进行天地图的服务调用,如何将天地图返回的xml信息快速转换成json对象,但是我们仍然缺乏对转换的JSON数据进行Web可视化。前文链接如下:

序号博文地址
1在SpringBoot中基于JAXB实现天地图路径规划结果XML转JSON实践
2在SpringBoot中使用UniHttp简化天地图路径规划调用实践

         本文将重点结合Leaflet对请求的结果进行可视化,不仅实现对规划的路径的展示,同时还展示了路线中的转折点进行标注的全面的展示。使用本方案不需要自己来实现路径规划的算法,对于在系统中集成相关的功能应用有较快的能力。

一、路径规划需求

        路径规划技术的演进历程见证了从传统的纸质地图导航到数字化地图的转变。早期的路径规划依赖于复杂的算法和庞大的计算资源,普通用户难以直接获取和使用。然而,随着互联网技术的普及和云计算的兴起,路径规划逐渐走向大众化和实用化。天地图作为国内领先的地理信息服务平台,提供了丰富的地图数据和强大的API接口,为开发者提供了强大的支持。而Spring Boot框架以其简洁、高效的特性,成为构建企业级应用的首选。Leaflet作为一款轻量级的地图库,以其易用性和高性能,成为Web开发中地图可视化的理想选择。

1、需求背景

        在旅游行业中,路径规划的可视化具有重要意义。黄花机场作为长沙的重要交通枢纽,每年接待大量国内外游客。橘子洲景区作为长沙的标志性景点,吸引着无数游客前来观光。然而,从机场到景区的路径规划往往涉及复杂的交通网络和多样的出行方式,游客在初次到达时可能会感到迷茫。通过构建一个基于Leaflet、Spring Boot和天地图的路径规划可视化系统,可以为游客提供直观、便捷的导航服务。系统不仅能够展示最优路径,还能实时更新路况信息,帮助游客避开拥堵路段,节省出行时间。同时,结合天地图的POI(兴趣点)数据,系统还能为游客推荐沿途的餐饮、住宿等服务,提升整体旅游体验。

2、技术选型

        技术实现方面,Spring Boot框架提供了稳定、高效的应用开发环境,能够快速搭建后端服务,处理用户请求和数据交互。Leaflet则负责前端的地图展示和交互功能,通过调用天地图的API获取地图数据和路径规划结果。在路径规划算法上,可以采用经典的Dijkstra算法或A*算法,结合天地图的实时路况数据,计算出最优路径。系统架构设计遵循模块化原则,将地图服务、路径规划服务和用户交互服务分离,确保系统的可扩展性和可维护性。

3、功能简述

        以黄花机场到橘子洲景区为例,该路径规划可视化系统将展示从机场出发,经过主要交通节点,最终到达景区的详细路线。系统支持多种出行方式,包括驾车、公交和步行,并根据用户选择的出行方式动态调整路径规划结果。同时,系统还提供路径长度、预计行驶时间等关键信息,并以直观的图形化方式展示在地图上。用户可以通过缩放、平移等操作查看路径细节,还可以点击查看沿途的POI信息,获取更多实用建议。

二、Leaflet前端可视化

        本节将重点讲解如何使用Leaflet来实现对路径规划的结果进行展示,后台的实现可以翻阅之前的示例代码。首先介绍内容布局,然后介绍规划路径的Web可视化,最后介绍如何对转折路线的展示。

1、内容布局

        首先来介绍一下页面的内容布局,参考一般的导航软件,可以看到对于路径规划的结果一般会包含以下的主要信息。首先会包含路线信息,其次会将重要的转折点进行展示,再者还有对重点路段的信息进行说明,帮助在进行行进时有指向性提示,在展示的时候分为左右结构。如下图所示:

        因此下面将着重从以下两个方面的实现来进行展示。 

2、路线展示

首先使用Leaflet对天地图接口返回的路线信息进行综合展示,打开访问接口,在网络请求中查看返数据,接口返回如下:

        在返回结果中,routelatlon字段表示具体的规划路径,这表示连续的坐标点,每个坐标点使用分号隔开,经纬度之间用逗号分隔。因此在解析时,首先实现需要将字符串按照表示分隔,然后将坐标点添加到一个数组中。关键代码如下:

var routingArray = new Array(); var routelatlonStr = result.data.routelatlon; var routelatlonStrArray = routelatlonStr.split(";"); for(var i = 0;i<routelatlonStrArray.length;i++){ var _tempStr = routelatlonStrArray[i]; if(_tempStr == "") continue; routingArray.push([_tempStr.split(",")[1],_tempStr.split(",")[0]]); } L.polyline([ [routingArray]],{color: '#1890ff'}).addTo(showBaseGroup);

         为了方便的展示起始点位置,需要自定义两个mark,分开采用两个自定义的icon图片来进行图片的绑定,关键代码如下:

//开始图标 var startIcon = L.icon({ iconUrl: ctx + '/img/start_point_48.png', iconSize: [40, 40], // 设置图片大小 宽度32.高度32 iconAnchor: [25, 35] }); //结束图标 var endIcon = L.icon({ iconUrl: ctx + '/img/end_point_48.png', iconSize: [40, 40], // 设置图片大小 宽度32.高度32 iconAnchor: [12, 10] }); //添加起点 L.marker(new L.latLng(result.data.orig.split(",")[1],result.data.orig.split(",")[0]), {icon: startIcon}).addTo(showBaseGroup); //添加终点 L.marker(new L.latLng(result.data.dest.split(",")[1],result.data.dest.split(",")[0]), {icon: endIcon}).addTo(showBaseGroup);

        这样添加了路线之后,就可以在路线的起止位置展示不同的起始点位置信息。效果如下所示:

3、转折路线展示

        最后在页面的左边需要显示这条路线的分支路线信息,这里采用原生html动态拼接实现方式,循环数据,然后东通过Jquery来实现动态元素的创建,代码如下:

var index = 0; for(var i=0;i < result.data.routes.items.length;i++){ var dataInfo = result.data.routes.items[i]; var _li = "<li>"; _li += dataInfo.strguide; _li += "<div>" _li += "<a href='#'>标记</a>"; _li += "<i></i> 行驶15分钟"; _li += "</div>"; _li += "</li>"; $("#routing_ul").append(_li); }

        使用动态拼接生成之后,页面效果如下:

        这就是路径规划结果的WebGIS可视化。通过本实例,大家都可以掌握如何对天地图的路径规划结果进行可视化展示,同时展示不同的路段的基本信息。 

三、总结

        以上就是本文的主要内容,本文旨在探讨如何利用Leaflet这一轻量级、开源的地图JavaScript库,结合Spring Boot框架和天地图服务,构建一个高效、直观的路径规划可视化系统,并以黄花机场到橘子洲景区为例,展示该技术在实际场景中的应用价值。总之,本研究不仅具有重要的理论意义,还具有广泛的实际应用价值。通过结合Leaflet、Spring Boot和天地图,构建一个高效、直观的路径规划可视化系统,可以为旅游行业提供技术支持,为游客提供便捷服务,同时也为城市交通管理和规划提供参考。随着技术的不断发展和完善,路径规划可视化系统将在更多领域发挥重要作用,为人们的出行和生活带来更大的便利。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家博主在评论区不吝留言指出,不胜感激。

Read more

数据库基础与MySQL核心组件解析

数据库基础与MySQL核心组件解析

—数据库专栏— 数据库基础与MySQL核心组件深度解析 * @[toc](数据库基础与MySQL核心组件深度解析) * 一、数据库基础:为什么我们需要它? * 1.1 什么是数据库? * 1.2 使用数据库的九大作用 * 二、关系型数据库与主流产品 * 2.1 关系型数据库(Relational Database)定义 * 2.1 非关系型数据库 * 2.2 主流关系型与非关系型数据库 * 三、MySQL安装与核心配置 * 3.1 MySQL 服务端程序 `mysqld` * 3.2 数据库服务器、数据库与表的关系 * 3.3 选项(配置)文件详解 * 四、MySQL客户端工具 * 五、客户端与服务器的通讯方式 * 5.1 C/

By Ne0inhk
Spring IoC和DI

Spring IoC和DI

目录 IoC 引入 传统实现思路 解决方案 IoC的优势 DI Spring 是包含了众多⼯具⽅法的 IoC 容器. IoC 什么是IoC? 像在类上⾯添加 @RestController 和@Controller 注解, 就是把这个对象交给Spring管理, Spring 框架启动时就会加载该类. 把对象交给Spring管理, 就是IoC思想. IoC:Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发⽣了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要⾃⼰通过 new 创建对象, 现在不需要再进⾏

By Ne0inhk
实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南

实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南

实测对比:ToDesk、向日葵、AnyDesk、RustDesk、Splashtop五大主流远程软件谁最强?2026年选购指南 前言 最近,随着工作方式的变化,尤其是远程办公和跨设备协作的需求越来越大,我发现自己也越来越依赖远程控制软件。作为一名自由职业者,我通常在家工作,偶尔需要快速解决电脑上的一些技术问题,或者访问公司工作室的电脑进行任务处理。而在这些情况下,能够迅速、稳定地远程连接和控制另一台电脑,成了我工作的必要条件。 印象很深的一次,我正在准备一个重要的视频会议,突然遇到电脑系统卡顿,导致视频画面卡住,甚至连文件上传都出现了问题。眼看会议马上就要开始了,我急得像热锅上的蚂蚁。这时,我决定试试通过远程控制软件连接到工作室的电脑,看看能不能解决问题。 而市面上有那么多远程控制软件,究竟哪一款能够真正满足我的需求? 我的明确需求是,这款远程软件不仅要能够帮我解决突发的技术问题,还可以在不同设备之间无缝切换,尤其是能从手机、平板等移动设备上进行操作。于是,我花了一些时间,详细测试目前市场上主流的几款远程控制软件,包括ToDesk、向日葵、AnyDesk、RustDesk、

By Ne0inhk
MCP Gateway:零侵入式 API 到 MCP 协议的转换网关

MCP Gateway:零侵入式 API 到 MCP 协议的转换网关

文章目录 * 概述 * ✨ MCP Gateway 是什么? * 官网 * 核心设计理念 * 架构图 * 快速开始 * 一键启动 MCP Gateway * 访问和配置 * 测试 概述 MCP狂欢迎来了很多玩乐的MCP Server,但是也有很多产品和B端开始接入MCP,当MCP真正应用到生产环境的时候,势必会遇到大量存量的服务、API需要改造,涉及投入资源去做,因此就需要有一个MCP层面的“Nginx”来反向代理存量的API,让个人和企业可以快速接入MCP生态,快速验证想法验证市场,而不需要一开始大量effort去投入改造。 目前市场上只有Higress在支持MCP网关后迎来第二春,但是我觉得Higress并不一定适合所有人,他的接入成本略高,文档缺失,配置难以捉摸,基于istio、envoy、wasm这一套的学习成本不低,尤其希望能做一定的二开,极其痛苦。但是不可否认阿里在大规模场景下是有技术护城河的,这边只是客观描述现存问题,不拉不踩。基于这样的背景,我觉得市面上是需要存在一个更低成本、平台中立、轻量化的方案,因此我开源了这个项目,目前

By Ne0inhk