本帖最后由 nxy 于 2025-9-15 01:11 编辑
零、前言
由于 HomeAssistant 默认使用境外 Carto 地图,常常加载缓慢甚至超时。
而百度地图、高德地图等地图服务由于坐标系和API差异,通常需要使用第三方卡片或者APP。如果相关组件停止更新,可能需要花费大量时间进行迁移。
本教程选择“天地图”作为地图服务提供商,可以免费使用地图瓦片 API(1万次/天)。
该方案不会导致坐标偏移,也无需修改任何现有的地图卡片;如果方案失效,仅需移除脚本,即可快速还原。
完成设置后,将在网页、APP端中的所有原生地图组件中生效。
tips:我可能使用了较新的 JS 语法,使用低版本 Webview 的旧机器可能无法正常替换。
一、步骤
-
前往天地图官网,注册并获取服务许可(Key)。
-
打开 HomeAssistant 配置文件夹,在 /config/configuration.yaml 文件中添加以下代码。
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
extra_module_url:
- /local/hass_tianditu.js
- 如果
frontend.extra_module_url已存在,则仅需添加一项 /local/hass_tianditu.js 。
-
从 Github Gist 中下载 hass_tianditu.js 。
-
在脚本首行填写申请的“天地图Key”,然后将其上传至 /config/www 。
-
重启 HomeAssistant 即可生效。
二、原理
通过监听 DOM 树的变化,自动将 Carto 地图的瓦片链接替换为天地图的底图和标注图层链接。
当遇到请求的地图级别(Z)超过天地图最大支持级别时,使用算法将瓦片贴图降级并放大。
|