跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端java

基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化

综述由AI生成基于 Leaflet 和天地图构建长沙市免费运动场所 WebGIS 可视化平台。流程涵盖从基础数据清洗、Java 后端调用地名解析服务获取经纬度,到前端使用 Leaflet 进行地图标记与信息展示。通过实际案例展示了桥下空间、社区公园等场地的空间分布及属性详情,为市民查询提供了便捷入口。

PentesterX发布于 2026/3/26更新于 2026/6/1227 浏览
基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化

基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化

前言

WebGIS(Web 地理信息系统)技术通过将地理信息与网络技术相结合,实现了地理空间数据的在线发布、查询、分析和可视化。Leaflet 作为轻量级且功能强大的前端地图框架,能够方便地与各种地图服务集成。天地图作为国内自主研发的地理信息服务平台,提供了高精度的矢量与影像数据资源。本案例旨在利用这两项技术,构建一个长沙市免费运动场所的可视化平台,帮助用户直观地查看场地分布及详细信息。

文章配图

一、免费运动场所数据整理

1、基础数据来源

本次整理的免费运动场所数据来源于长沙本地宝的相关推荐内容。原始数据主要包含位置描述信息,缺乏具体的经纬度坐标。为了在地图上精准展示,需要将这些中文地址转换为地理坐标。

序号所属范围位置信息
1开福区东风路立交桥东风路与三一大道交会处
2芙蓉区花侯路浏阳河大桥芙蓉区花侯路浏阳河大桥下方
3梅溪湖街道梅园社区导航梅岭国际小区南门,进门左拐进入小区,在 8 栋后面
4湖南大学附属中学对面湖南大学附属中学对面,联丰路桥下
5洋湖街道湘府路大桥西附近
6天顶街道天源社区、雷锋大道导航静园山庄,进门左拐,或者导航科迪雅静园幼儿园

2、Java 后台数据解析

为了避免地名在全国范围内重名导致的定位偏差,我们在调用天地图地名解析服务前,会在地址前添加'长沙'等限定词。以下是 Java 后端调用天地图 API 进行地理编码的示例代码:

@Test public void testGeocoder2() throws InterruptedException { 
    String [] loc_name = {"东风路立交桥运动公园","芙蓉区花侯路浏阳河大桥下方","梅岭国际小区","湖南大学附属中学对面","长沙湘府路大桥西","长沙雷锋大道静园山庄"}; 
    for(String name : loc_name) { 
        String keyWord = "%7B'keyWord':'" + name + "'%7D" ; 
        HttpResponse<String> resp = tdtOptService.getGeocoder(keyWord, TDT_SERVER_KEY); 
        System.out.println(name +  +resp.getBodyResult()); 
        Thread.sleep(); 
    } 
}
"===>"
1500

运行测试用例后,控制台会返回对应的 JSON 结果,其中包含了准确的经纬度信息,为前端展示做好准备。

二、Leaflet 前端地图展示

1、基础数据准备

获取到经纬度后,我们需要将数据组装成前端可用的 JSON 格式。每条数据应包含经纬度、名称、所属范围、交通方式、颜色标识以及适宜的运动项目等信息。

// 待标绘的点
var dataJson = [
  {
    lat: 28.232727,
    lon: 112.987638,
    c_name: "东风路立交桥运动公园",
    range: "开福区东风路立交桥",
    traffic: "可乘坐公交到达附近站点,如东风路站等;若选择自驾,周边有相应道路可抵达。",
    color: "#03a9f4",
    sports: "包括三个半场篮球场,两片多功能运动场,标准羽毛球场,儿童活动区和广场舞场地。"
  },
  {
    lat: 28.212437,
    lon: 113.034959,
    c_name: "芙蓉区花侯路浏阳河大桥下方",
    range: "芙蓉区花侯路浏阳河大桥",
    traffic: "乘坐公交可选择靠近浏阳河大桥的站点下车;自驾可通过花侯路等道路抵达。",
    color: "#ff9800",
    sports: "设置了体育健身场地,保留了龙舟文化展示区。"
  },
  {
    lat: 28.195517,
    lon: 112.875721,
    c_name: "梅岭国际小区",
    range: "梅溪湖街道梅园社区",
    traffic: "地铁 2 号线梅溪湖西 4 号口步行到达;也可乘坐公交到梅岭公园。",
    color: "#591ee9",
    sports: "有三片羽毛球场地,配备乒乓球桌,背靠幽静的小山坡。"
  },
  {
    lat: 28.139807,
    lon: 112.924884,
    c_name: "湖南大学附属中学对面",
    range: "岳麓街道、罗家嘴立交桥西南角",
    traffic: "地铁 3 号线阳光站 1 号口步行到达;建议乘坐公交到联丰路潭州大道口公交站。",
    color: "#607d8b",
    sports: "桥下空间改造而来,有三片羽毛球场地,环境很新。"
  },
  {
    lat: 28.11695,
    lon: 112.9404,
    c_name: "湘府路大桥西",
    range: "洋湖街道",
    traffic: "乘坐公交至湘府路大桥西步行到达。",
    color: "#4b29b5",
    sports: "包含一片五人制足球场、两片篮球场、三片羽毛球场、六张乒乓球台。"
  },
  {
    lat: 28.2442,
    lon: 112.88991,
    c_name: "静园山庄",
    range: "天顶街道天源社区、雷锋大道",
    traffic: "乘坐公交到静园站下,建议自驾。",
    color: "#a50b0b",
    sports: "原网球场,打羽毛球也可以,边上还有一个篮球场。"
  }
];

2、具体位置及属性标记

准备好数据后,使用 Leaflet 创建地图实例并遍历数据添加标记。这里使用了 L.divIcon 自定义图标样式,并在点击时显示详细信息弹窗。

var collisionLayer = L.LayerGroup.collision({ margin: 3 });
for (var i = 0; i < dataJson.length; i++) {
    var html = '';
    var marker = L.marker([dataJson[i].lat, dataJson[i].lon], {
        icon: L.divIcon({
            iconSize: null,
            className: '',
            popupAnchor: [5, 5],
            shadowAnchor: [5, 5],
            html: buildHtml(dataJson[i], i)
        })
    }).addTo(collisionLayer);
}
collisionLayer.addTo(map);

function buildHtml(dataJson, index) {
    var html = '<div style="color:' + dataJson.color + ';"><div class="animation-spaceInDown">';
    html += '<b>' + (index + 1) + '、' + dataJson.range + '&nbsp;' + dataJson.c_name + '</b><span></span></div>';
    html += '<div>推荐交通:' + dataJson.traffic + '</div>';
    html += '<div>推荐运动:' + dataJson.sports + '</div>';
    html += '</div>';
    return html;
}

三、成果展示

1、空间位置分布

本次共展示了 6 处免费运动场所。从空间分布来看,静园山庄位于最北边,芙蓉区花侯路浏阳河大桥下方在最东边,梅岭国际小区位于最西边,湘府路大桥西则处于最南端。

2、各场地详情

文章配图 东风路立交桥运动公园:包含篮球场、气排球场、羽毛球场及儿童活动区,适合家庭健身。

文章配图 芙蓉区花侯路浏阳河大桥下方:设有体育健身场地及龙舟文化展示区,兼具运动与文化体验。

文章配图 梅岭国际小区:场地较大,配有羽毛球和乒乓球设施,环境安静。

文章配图 湖南大学附属中学对面:桥下空间改造项目,设施较新。

文章配图 湘府路大桥西:设施全面,涵盖足球、篮球、羽毛球等多种球类场地。

文章配图 静园山庄:地理位置稍偏,适合附近居民前往。

四、总结

本方案通过整合本地生活数据与天地图地理信息服务,利用 Java 后端进行地址解析,结合 Leaflet 前端实现可视化展示,成功构建了长沙市免费运动场所查询平台。该流程不仅解决了市民查找场地难的问题,也为后续类似 GIS 应用的开发提供了参考。通过地图交互,用户可以快速获取位置、交通及设施信息,提升了公共服务的便捷性。

目录

  1. 基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化
  2. 前言
  3. 一、免费运动场所数据整理
  4. 1、基础数据来源
  5. 2、Java 后台数据解析
  6. 二、Leaflet 前端地图展示
  7. 1、基础数据准备
  8. 2、具体位置及属性标记
  9. 三、成果展示
  10. 1、空间位置分布
  11. 2、各场地详情
  12. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Java 字符处理核心:char、String、StringBuilder 与 StringBuffer 详解
  • 基于 AI 辅助的 Java 在线考试系统开发实践
  • 飞算 JavaAI 智能开发助手功能解析
  • 字节跳动大数据开发面试常见问题及技术解析
  • 使用 Java 计算 1 到 20 的阶乘之和
  • IntelliJ IDEA 编译报错:-source 1.6 不支持 Diamond 运算符
  • Spring Boot @ResponseBody 注解原理与实战详解
  • Android 陀螺仪开发实战:从传感器数据到角度积分
  • 基于 AI 辅助开发的高校宿舍管理系统实战
  • C++ 多线程同步实战:原子操作 atomic 详解
  • LangChain 实战:工具调用与结构化输出
  • Java 基于 Hadoop 的电商数据分析系统设计与实现
  • Python 安装与语法基础入门教程
  • 飞书与 OpenClaw 接入指南:无需服务器通过长连接运行机器人
  • VSCode 配置 GitHub Copilot 使用 OpenAI 兼容模型
  • Spring AI 如何助力 Java 企业级 AI 应用开发
  • 2024 年中国金融大模型产业发展洞察报告
  • OpenClaw 大龙虾机器人本地部署与配置实战
  • 多模态 Agent 图像识别技能开发:JavaScript+Python 全栈图像处理方案
  • Spring Boot 整合 MyBatis-Plus 实现多数据源配置

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online