You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Leaflet中加载Arcanum历史地图瓦片?

如何在Leaflet中加载Arcanum历史地图瓦片?

嘿,我来帮你梳理下这个问题!你遇到的灰色瓦片问题,大概率是因为Arcanum(原mapire.eu)的瓦片服务做了防盗链和签名验证,不仅仅是Referer这么简单——毕竟它们用Cloudfront托管,肯定有更严格的访问控制。下面给你几个可行的思路:

  • 模拟完整的浏览器请求头
    浏览器在访问maps.arcanum.com时加载瓦片,除了Referer,还有User-AgentCookieOrigin等关键请求头。你可以打开浏览器开发者工具(F12),在Network标签里找到一个成功加载的瓦片请求,复制所有请求头信息,然后在Leaflet的TileLayer中通过headers选项配置:

    L.tileLayer('https://tiles.arcanum.com/mercator/cadastral/{z}/{x}/{y}?v=54', {
      headers: {
        'Referer': 'https://maps.arcanum.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        'Cookie': '替换为你从浏览器复制的有效Cookie值',
        'Origin': 'https://maps.arcanum.com'
      },
      tms: true // Arcanum使用TMS瓦片格式,必须开启这个参数
    }).addTo(map);
    

    注意:Cookie可能会过期,且这种方法需要确认是否符合网站的使用条款,避免违规。

  • 查找官方嵌入方案或API
    很多地图服务商会提供合法的嵌入方式或公开API,你可以去Arcanum网站的帮助文档、开发者专区找找,说不定有专门适配Leaflet的插件,或者授权的瓦片访问URL格式,这才是最稳妥的方案。

  • 使用官方嵌入代码
    如果找不到API,试试网站自带的分享/嵌入功能:在maps.arcanum.com上定位到你需要的地图,看看有没有“嵌入”按钮,生成iframe代码后嵌入到你的页面中。虽然不是直接用Leaflet加载瓦片,但能合法展示地图内容。

  • 关于旧GitHub提示失效的原因
    你提到的旧GitHub方案过时,很可能是因为Arcanum升级了验证机制——比如现在请求瓦片需要动态生成的签名参数,这个签名和当前会话、请求时间绑定,静态URL自然无法通过验证。这种情况下,除非能破解签名算法(不推荐,可能违反法律和服务条款),否则只能用官方允许的方式。

备注:内容来源于stack exchange,提问作者SammyC

火山引擎 最新活动