找回密码
 立即注册

微信扫码登录

搜索
楼主: nxy

[UI界面] 【天地图】告别白屏!轻松替换 HomeAssistant 地图服务商

[复制链接]
nxy 手机认证

1

主题

16

回帖

261

积分

中级会员

积分
261
金钱
244
HASS币
0
 楼主| 发表于 昨天 15:21 | 显示全部楼层
xuhsu 发表于 2025-10-24 14:20
没有成功。一是key是 服务端 还是 浏览器端的?二是 key 是放在 < >里?还是 去掉,放在'  '  里? ...

key是浏览器端,然后要去掉<>,放在''里
回复

使用道具 举报

0

主题

27

回帖

83

积分

注册会员

积分
83
金钱
56
HASS币
0
发表于 昨天 15:38 | 显示全部楼层
xuhsu 发表于 2025-10-24 14:20
没有成功。一是key是 服务端 还是 浏览器端的?二是 key 是放在 < >里?还是 去掉,放在'  '  里? ...

Keyl服务端跟浏览器端都试过,没效果,求教应该是哪个?Key放在< >里
回复

使用道具 举报

0

主题

27

回帖

83

积分

注册会员

积分
83
金钱
56
HASS币
0
发表于 昨天 15:39 | 显示全部楼层
wkbhll 发表于 2025-10-24 11:26
在天地图官网上申请个人开发账号会自动生成KEY,申请很简单。hass_tianditu.js的第一行修改,可以以text文 ...

请问你申请的服务端还是浏览器端?
回复

使用道具 举报

0

主题

7

回帖

47

积分

新手上路

积分
47
金钱
40
HASS币
0
发表于 昨天 16:14 | 显示全部楼层
artxk 发表于 2025-10-24 15:39
请问你申请的服务端还是浏览器端?

去看下api说明 肯定得用浏览器端
回复

使用道具 举报

0

主题

28

回帖

259

积分

中级会员

积分
259
金钱
231
HASS币
0
发表于 昨天 16:36 | 显示全部楼层
都弄完了,什么也不显示,也没有错误。
ScreenShot_2025-10-24_163511_922.png
回复

使用道具 举报

0

主题

27

回帖

83

积分

注册会员

积分
83
金钱
56
HASS币
0
发表于 昨天 16:41 | 显示全部楼层
nxy 发表于 2025-10-24 15:21
key是浏览器端,然后要去掉,放在''里

const KEY = 'de3b6a53d8cc5e4c9b8b202';

const MAX_Z = 18;
const TILE_SIZE = 256;

/**
* 将超出最大支持级别的tile xyz数据,降级到maxZoom,并返回变换参数
* @param {number} x 目标级别下的x
* @param {number} y 目标级别下的y
* @param {number} z 目标级别
* @param {number} maxZoom 服务端最大支持的级别
* @returns {object} { srcX, srcY, srcZ, scale, dx, dy }
*/
function downgradeTile(x, y, z, maxZoom) {
        if (z <= maxZoom) {
                // 不需要降级
                return {
                        srcX: x,
                        srcY: y,
                        srcZ: z,
                        scale: 1,
                        dx: 0,
                        dy: 0
                };
        }
        const scale = 2 ** (z - maxZoom);
        const srcX = Math.floor(x / scale);
        const srcY = Math.floor(y / scale);
        const srcZ = maxZoom;

        // 计算该瓦片在目标级别下的起始位置
        const tileSize = 256; // 假设瓦片宽高256px
        const offsetX = (x % scale) * tileSize / scale;
        const offsetY = (y % scale) * tileSize / scale;
        return {
                srcX,
                srcY,
                srcZ,
                scale,
                dx: -offsetX * scale,
                dy: -offsetY * scale
        };
}

const luckyServer = Math.floor(Math.random() * 8);
function generateTileUrl(x, y, z, type, key = KEY) {
        return `//t${luckyServer}.tianditu.com/DataServer?T=${type}&x=${x}&y=${y}&l=${z}&tk=${key}`;
去掉括号了,也不成功,心好累
回复

使用道具 举报

3

主题

13

回帖

87

积分

注册会员

积分
87
金钱
71
HASS币
0
发表于 昨天 16:57 | 显示全部楼层
去掉括号<>了,地图还是OpenStreetMap
回复

使用道具 举报

0

主题

28

回帖

259

积分

中级会员

积分
259
金钱
231
HASS币
0
发表于 昨天 17:02 | 显示全部楼层
fencanyan 发表于 2025-10-24 16:36
都弄完了,什么也不显示,也没有错误。

我使用的是https访问HA,就会显示空白,我先开始在地址前面加了https也还是空白,后来把地址改成这个就能显示了:
return `https://t${luckyServer}.tianditu.gov.cn/DataServer?T=${type}&x=${x}&y=${y}&l=${z}&tk=${key}`;
回复

使用道具 举报

1

主题

18

回帖

103

积分

注册会员

积分
103
金钱
84
HASS币
0
发表于 昨天 17:03 | 显示全部楼层
yuxiRJ 发表于 2025-10-24 16:57
去掉括号了,地图还是OpenStreetMap

我也是,一直不成功。
回复

使用道具 举报

0

主题

116

回帖

987

积分

高级会员

积分
987
金钱
871
HASS币
0
发表于 昨天 17:13 | 显示全部楼层
本帖最后由 wkbhll 于 2025-10-24 17:17 编辑
nxy 发表于 2025-10-24 12:28
脚本更新后应该就不需要修改了,因为我把协议去掉了,理论上会自动匹配正在使用的协议。 ...

谢谢!我现在发现一个问题,如果在本地直接内网上地图是天地图的,但在外面进行外网访问时地图就是空白的,应是http和https的原因(如你所说已会自动匹配了的,怎么还会这样)请教楼主有办法解决吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-10-25 14:27 , Processed in 0.057868 second(s), 6 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表