该技能用于构建基于位置的功能,覆盖四个主要平台:Google Maps Platform、Mapbox、Leaflet(开源)以及 OpenStreetMap/Nominatim(免费)。用途包括地理编码与逆地理编码、路径规划、交互式地图、地理围栏、热力图、门店查找、车队跟踪与地址自动补全。资料建议按预算选择:Google Maps 适合功能完整的商业使用,Mapbox 适合自定义样式,Leaflet 配合 OSM 适合零成本自托管方案。
主要能力方面,技能涵盖以下内容。地理编码与逆地理编码:提供 Google 地理编码函数示例,以及 Nominatim 免费地理编码示例(按其服务条款需携带 User-Agent 请求头),并给出带延迟的批量地理编码函数。交互式地图:提供 Leaflet 配合 OpenStreetMap 的地图初始化、标记与弹出窗口、GeoJSON 图层加载示例,以及 Mapbox GL JS 的矢量瓦片与自定义样式、标记和导航控件示例。路径与距离矩阵:提供 Google Directions 路径查询、Distance Matrix 多对多距离计算,以及免费的 OSRM 路径计算示例。地理围栏与工具函数:提供 Haversine 距离计算、点在多边形内判断和圆形围栏判断。门店查找与路线优化:提供基于 PostGIS 的附近搜索 SQL,以及使用 Google Directions 途经点重排的路线优化函数。
使用方式上,资料按步骤说明:先进行平台选择与设置,包括启用相关 API 与配置环境变量或引入 Leaflet 的样式表和脚本;再调用地理编码接口;然后初始化交互式地图;接着进行路径与距离矩阵计算;随后使用地理围栏与工具函数;最后实现门店查找与路线优化。资料中还给出两个示例:一是为咖啡连锁店构建门店查找,用户输入地址后地理编码、在 PostgreSQL 中查找 10 公里内最近的 5 家门店,并在 Leaflet 地图上显示带距离标签的结果;二是配送车队路线优化并设置地理围栏告警,例如从柏林仓库出发的 6 个投递点,用 Google Directions 的途经点优化重排顺序,并为每个站点设置 200 米圆形围栏记录到达时间戳。
适用场景包括门店查找、配送路线优化与车队跟踪、地理围栏告警、地图可视化与区域展示等。
限制与注意事项(均为资料明确提及):Google Maps 每月 200 美元免费额度之后按 API 调用计费;Mapbox 每月提供 50,000 次免费地图加载;Leaflet + OSM + Nominatim 完全免费但 Nominatim 限速为每秒 1 次请求。渲染地图时必须保留署名,OpenStreetMap 要求可见署名,Mapbox 与 Google 也有各自的署名要求且不得移除。批量地理编码需加延迟(Google 100ms 以上,Nominatim 1 秒)。GeoJSON 多边形坐标环必须首尾坐标一致,否则会导致渲染失败和几何无效错误。建议缓存地理编码结果以减少重复调用。需注意坐标顺序差异:Google Maps 使用 {lat, lng} 对象,Mapbox 与 GeoJSON 使用 [lng, lat] 数组。
其他未在资料中说明的内容暂未提供。