我的瓷砖需要遵守特定的规格吗?
我有一个大图像文件,想用LeafletJS将其制作成地图。我将使用Python Imaging Library将其切割成所需的各种瓦片。
然而,我找不到关于在Leaflet中使用自定义地图的任何信息。我是否需要以某种方式向Leaflet提供X、Y、Z信息范围?我需要提供每个瓦片的像素大小吗?它会自己解决这个问题吗?
简洁地说,我需要做什么才能拥有可用于LeafletJS的图像文件和地图瓦片,还需要在我的前端脚本中做什么(除了明显指定自定义URL之外)?
您甚至可以直接从数据库中提供瓷砖。
Leaflet指定的格式非常灵活。
Leaflet仅使用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
DB.GetTile()
例程中实现,该例程应该提供一个虚拟瓦片或安排返回404 Not Found
。(在后一种情况下,Leaflet可以编程以提供其自己的“缺失瓦片”瓦片。)我观察到,Leaflet确实会请求例如“负坐标”,而且相当频繁。 - Mike Robinson