基于 Leaflet 和天地图实现长沙免费运动场所 WebGIS 可视化
在城市建设中,如何快速找到身边的免费运动场地一直是市民关心的话题。利用 WebGIS 技术,我们可以将分散的地理信息整合到一个可视化的平台上。本案例结合轻量级的 Leaflet 框架与国产的天地图服务,构建了一个长沙市免费运动场所的查询系统。
数据准备与解析
数据来源整理
基础数据主要来源于本地生活服务平台整理的公开信息。原始数据通常只有中文地址描述,缺乏经纬度坐标,无法直接在地图上展示。我们需要将这些文本地址转换为具体的空间位置。
| 序号 | 所属范围 | 位置信息 |
|---|---|---|
| 1 | 开福区东风路立交桥 | 东风路与三一大道交会处 |
| 2 | 芙蓉区花侯路浏阳河大桥 | 芙蓉区花侯路浏阳河大桥下方 |
| 3 | 梅溪湖街道梅园社区 | 导航梅岭国际小区南门,进门左拐进入小区,在 8 栋后面 |
| 4 | 湖南大学附属中学对面 | 湖南大学附属中学对面,联丰路桥下 |
| 5 | 洋湖街道 | 湘府路大桥西附近 |
| 6 | 天顶街道天源社区、雷锋大道 | 导航静园山庄,进门左拐,或者导航科迪雅静园幼儿园 |
Java 后台地名解析
为了避免全国范围内地名重名导致的定位偏差,我们在调用天地图地名解析服务前,会给地址加上'长沙'等限定词。这里使用 Java 编写一个简单的测试用例来演示如何批量获取坐标。
@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 响应。这一步是后续前端展示的基础,确保每个点都能准确落在地图上。


