复刻高德地图“荫凉路线”的核心思路
遮荫导航 2022年8月,高德地图面向骑行和步行用户正式上线“防晒导航”,致力于通过动态光影跟踪等先进技术,实时计算特定时段内覆盖道路的阴影面积,为用户提供更清凉的出行体验。 其核心思路是:在常规路径规划的基础上,引入动态光影计算,将道路两侧建筑物和树木所产生的阴影纳入考虑,从而为用户推荐更多被遮蔽的荫凉路线。这一方法突破了传统导航只依赖距离与时间的限制,让路线选择更符合夏季用户的实际需求。 本文只针对**“基于建筑阴影的路网权重 + 最短路径”这一技术环节做实现记录: 以北京通州区一小块区域为例,输入建筑矢量与路网**,根据给定时刻的太阳方位角(azimuth)与高度角(altitude),推导每栋建筑的阴影投影,求出每条路段与阴影相交长度,把这段长度作为“阴影指标”写入 NetworkX 图的边属性,最终通过 nx.shortest_path 在两种策略里选路: 遮阴优先(适合夏季):最小化“非阴影长度”; 阳光优先(适合冬季):最小化“阴影长度”。 实现思路 数据准备:建筑与路网 建筑矢量数据预处理 遮阴路线的核心数据来源有两部分:建筑物轮廓和景区道路。为了避免复杂的几...
Hybrid 环境下高德 JS SDK 是如何调用原生定位的
在 Hybrid WebView 中用 AMap.Geolocation 触达系统原生定位 一、为何没有采用高德 Android 原生定位 SDK? 我的项目架构是 Hybrid:Android 外壳 + 内嵌 WebView 跑前端页面。 起初我考虑直接集成 高德 Android 定位 SDK,但这意味着: 需要原生开发经验(权限、前台服务、生命周期、功耗策略等); 轨迹、UI、上传等逻辑得在原生与 Web 双端同步维护,复杂度高。 因此我转向了高德 JS SDK(AMap.Geolocation): 让 Web 端负责定位与轨迹逻辑,但运行环境放在 Android WebView 内,并且 为 WebView 正确授予系统定位权限。这样 AMap.Geolocation 就会走 系统原生定位通道,而不是传统的 IP/浏览器定位,无需额外集成原生定位 SDK。 二、AMap.Geolocation 的多源融合 要理解 Hybrid 模式下为什么能精确定位,先看一下官方文档中对 AMap.Geolocation 的描述: 简单来说,AMap.Geolocation 内部有三...
结合夜间环境因素的露营地选址
结合夜间环境因素的露营地选址 我尝试做一个露营地选址的可视化 Demo,展示了北京地区部分露营地点的位置,并结合夜间环境因素、道路噪声模拟、天气与气象指标,为有观星需求或户外体验需求的人提供参考。用户可以点击地图上的露营点查看详细信息,包括地理位置、照片、简要介绍;同时在面板上可以查看夜间云量变化、夜间灯光分布、道路噪声模拟层以及气象数据和舒适度评价。 地图基于 Mapbox 渲染,支持夜间底图、叠加灯光和噪声分布图层; 露营地位点来源于高德地图 API,通过 POI 搜索接口保存为 JSON; 气象数据调用彩云天气 API,获取温度、湿度、风速、云量等指标; 舒适度评价则基于国家标准《人居环境气候舒适度评价》,分别计算温湿指数和风效指数,并进行等级划分。 技术思路 露营地位点 通过高德地图 API 的 POI 搜索接口获取(实际过程是通过浏览器调试工具观察 https://restapi.amap.com/v3/place/text 请求,保存返回的 JSON),字段包括地理坐标、地址、名称、照片。 天气与气象 我按经纬度 + 时间段向彩云拉取天气,重点取温度、湿度、风速...







