在LeafletJS中使用自定义地图图像切片?

我的瓷砖是否需要坚持任何特定的规格?

我有一个大的图像文件,我想转成与LeafletJS的地图。 我将要使用Python成像库将其切割成我需要的所有各种图块。

但是,我无法在Leaflet中find任何有关使用自定义地图的信息。 我是否以某种方式提供X,Y,Z信息的范围? 我给它的每个瓷砖的像素大小? 它能自行解决这个问题吗?

把我的问题放到一个简单的问题中:为了使图像文件可以像LeafletJS一样作为地图图块加倍,以及在我的前端脚本中需要做什么(如果有的话),我需要做些什么? (除了我的自定义URL的明显指定)

你正在寻找一个TileLayer 。 在这个TileLayer中,您将要获取的图像的URL使用如下模板提供给传单:

http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png 

当您处于指定的缩放比例(x和y水平)时,Leaflet将自动获取您input的URL上的图块。

根据你想要显示的图像,大部分的工作将在瓦片世代。 瓷砖应该总是有256x256px的大小,如果您使用的是地理数据,则使用的投影是墨卡托投影。 获取磁贴标识可能需要一些时间。 这里是一个关于瓷砖ID如何工作的例子 。

你甚至可以直接从数据库提供瓷砖。

格式传单指定非常灵活。

小册子只是使用z,x,y占位符来请求特定的图块。

例如:

 L.tileLayer('http://localhost/tileserver/tile.aspx?z={z}&x={x}&y={y}', { minZoom: 7, maxZoom: 16, attribution: 'My Tile Server' }).addTo(map); 

哪里Tiles.aspx

 Option Strict On Partial Class tile Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load Dim z, x, y As Integer z = CInt(Request.QueryString("z")) x = CInt(Request.QueryString("x")) y = CInt(Request.QueryString("y")) Dim b() As Byte = DB.GetTile(z, x, y) Response.Buffer = True Response.Charset = "" 'Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.ContentType = "image/png" Response.AddHeader("content-disposition", "attachment;filename=" & y & ".png") Response.BinaryWrite(b) Response.Flush() Response.End() End Sub