首页 编程与开发 WebGIS API调用实战:如何获取高德/百度地图的POI数据并展现在地图上?

API调用实战:如何获取高德/百度地图的POI数据并展现在地图上?

作者: GIS研习社 更新时间:2025-08-19 11:08:22 分类:WebGIS

API调用实战:如何获取高德/百度地图的POI数据并展现在地图上?

作为POI数据检索与地图可视化的实践指南,这篇文章聚焦两个最常用的数据源:高德地图与百度地图。我将从“是什么—为什么—怎么做”的路径出发,给出可复制的请求样例、坐标与投影的注意点、批量渲染方案与前端可视化代码片段,并补充速率与合规要点(含权威文档链接)。
一句话理解:把“地点搜索(POI检索)”想成“在一个巨大的城市黄页里,用关键字与地理范围快速翻页”,而把“地图可视化”想成“把翻到的条目用图钉落到地图上,找出空间分布的规律”。

3f93ff0b9dd8afbb528f56e542c65a5f

一、POI检索的核心:数据源与接口概览

POI数据通常通过地图平台提供的“地点检索/搜索”Web API获取。高德提供“搜索POI(含2.0)”与JS API海量点渲染能力;百度提供“地点检索(城市/圆形/矩形/多边形)”“地点详情”“JS GL”渲染能力。
  • 高德 Web 服务:支持关键词搜索、周边搜索、多边形搜索。
  • 百度地点检索:支持城市内检索、矩形框检索、圆形范围检索。

二、为什么要用API获取POI数据?

相比手工收集或购买商业数据,API调用有三大优势:
  1. 实时性:随时获取最新数据,避免过时。
  2. 灵活性:可按关键字、行政区、半径定制化检索。
  3. 可扩展性:易于结合Python脚本或Web前端进行批量处理与展示。

三、怎么做:API调用与数据解析

下面以高德和百度为例,展示最基础的调用方式。

1. 高德API调用示例

# Python示例:获取高德POI数据
import requests

key = "YOUR_AMAP_KEY"
url = "https://restapi.amap.com/v3/place/text"
params = {
    "keywords": "咖啡厅",
    "city": "北京",
    "key": key,
    "output": "json"
}
res = requests.get(url, params=params)
data = res.json()
for poi in data["pois"]:
    print(poi["name"], poi["location"])

2. 百度API调用示例

# Python示例:获取百度POI数据
import requests

ak = "YOUR_BAIDU_AK"
url = "https://api.map.baidu.com/place/v2/search"
params = {
    "query": "咖啡厅",
    "region": "北京",
    "output": "json",
    "ak": ak
}
res = requests.get(url, params=params)
data = res.json()
for poi in data["results"]:
    print(poi["name"], poi["location"])

四、在地图上可视化POI数据

最常见的方式是使用JS API在网页端展示。

1. 高德JS可视化

<div id="map" style="width:100%; height:500px;"></div>
<script src="https://webapi.amap.com/maps?v=2.0&key=YOUR_AMAP_KEY"></script>
<script>
  var map = new AMap.Map('map',{zoom:12, center:[116.397428,39.90923]});
  var marker = new AMap.Marker({position:[116.397428,39.90923]});
  map.add(marker);
</script>

2. 百度JS可视化

<div id="map" style="width:100%; height:500px;"></div>
<script src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_BAIDU_AK"></script>
<script>
  var map = new BMapGL.Map("map");
  map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 12);
  var marker = new BMapGL.Marker(new BMapGL.Point(116.404, 39.915));
  map.addOverlay(marker);
</script>

五、合规与优化要点

  • 速率限制:高德每秒并发不超过50次请求,百度有日配额(视账户等级)。
  • 坐标系统:高德为GCJ-02,百度为BD-09;若混合使用需转换。
  • 批量可视化:推荐使用聚合(Cluster)展示,避免地图加载过慢。
   

总结

通过调用高德或百度的POI检索API,我们可以快速、灵活地获取POI数据,并在网页或应用中实现地图可视化。这为城市规划、商业选址、出行分析等场景提供了高效解决方案。你是否已经尝试过将API结果叠加到自己的GIS平台或大屏可视化中?欢迎在评论区分享经验。 更多GIS实战与学习资料,欢迎访问 GIS研习社

参考文献

  • 高德地图API:地点搜索
  • 百度地图API:地点检索
  • 高德JS API文档
  • 百度JS API文档