我的磁贴需要遵守任何特定的规格吗?
我有一个很大的图像文件,我想用LeafletJS把它转换成地图。我将使用Python图像库将其切割成我需要的所有不同的瓦片。
然而,我在Leaflet中找不到任何有关使用自定义地图的信息。我是否以某种方式提供了X,Y,Z信息范围的传单?我要给它每个瓦片的像素大小吗?它能自己解决这个问题吗?
将我的问题简化为一个简洁的问题:我需要做什么才能使图像文件在LeafletJS中可以兼作地图瓦片,如果有的话,我需要在我的前端脚本中做什么?(除了明显指定我的自定义URL之外)
发布于 2012-11-30 16:22:07
您正在寻找TileLayer。在此TileLayer中,您使用如下模板将要获取的图像的URL提供给leaflet:
http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png当您处于指定的缩放、x和y级别时,Leaflet将自动获取您提供的URL上的磁贴。
根据您想要显示的图像,工作的更大部分将在平铺生成中。默认情况下,Tiles的大小为256x256px (可以在TileLayer选项中更改),如果您使用的是地理数据,则使用的投影是墨卡托投影。可能需要一些时间才能获得正确的磁贴It。Here is an example介绍了磁贴ids的工作原理。
发布于 2015-04-21 21:30:35
您甚至可以直接从数据库中提供磁贴。
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);where 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 Subhttps://stackoverflow.com/questions/13638969
复制相似问题