这已经是一个
已知的问题,但我认为那个答案可能比你需要的更加复杂。这是我的伪答案/建议:
在开始之前,我建议您阅读关于slippymap tilenames的
这篇文章,它会帮助很多。
考虑到您有固定的缩放级别和似乎具有有限的地图范围(边界),获取您的瓦片不应该太难。我建议打开一个浏览器,使用一个设置了该缩放级别和边界的leaflet地图,并查看网络选项卡。您将看到所有需要的瓦片的网络请求,以及这些瓦片的url。然后,您可以直接下载这些瓦片。
您也可以使用
leaflet-offline来完成这个操作。它是一个非常好用的快速工具,可以获取您所需的所有瓦片的URL,并将其美观地展示出来。leaflet-offline还可能有一种自动下载所有这些瓦片到您需要的目录结构的方法,但我发现他们的文档很难理解。
在您的计算机上创建一个目录,并给它起一个有用的名称,例如“我的离线瓦片”。在该目录中,创建一个子目录,并将其命名为您预期地图所在的缩放级别(假设它是10)。因此,您将拥有类似于以下内容的文件结构:
/my-offlline-tiles
/10
在下载每个瓦片时,请记住一旦下载完成,它们的命名方式将类似于“32.png”或者其他类似的东西,基本上都是“someNumber.png”。该数字(如我所链接文章中所解释的那样)是给定缩放级别和x列的瓦片的y坐标。因此,您必须注意这些URL中的z和x值,并将瓦片下载到适当的子目录中,“my-offline-tiles”目录下。例如,以“10/245/something.png”结尾的任何瓦片均应在此目录中:
/my-offlline-tiles
/10
/245
something.png
你的
/10
目录下可能会有几个子目录,每个子目录下可能还有几个 png 文件。这是瓦片服务器结构化其瓦片文件以方便访问的方式,正如你在那篇文章中所了解到的。你需要复制这个结构,并提供足够的瓦片覆盖你所需的缩放级别和范围。
现在,在你的地图中,你只需要将 L.tileLayer 的 url 设为你的瓦片位置即可。假设
/my-offlline-tiles
在你的项目(包括 index.html)的
public
目录下。
<TileLayer url="/my-offline-tiles/{z}/{x}/{y}.png" />
根据您的项目结构、构建流程或机器目录结构,可能需要稍微调整一下。基本上,您需要确保您的React应用程序知道如何在您的机器上找到这些文件。但只要它做到了,Leaflet将会找到这些瓦片并按预期在地图上呈现它们。
希望这已经足够让您开始了。