Maps 在JS中使用自定义地图图像平铺?

Maps 在JS中使用自定义地图图像平铺?,maps,leaflet,openmap,Maps,Leaflet,Openmap,我的瓷砖是否需要符合任何特定规格 我有一个大的图像文件,我想把它变成一个地图与传单。我将使用Python图像库将其切割成我需要的所有不同的瓷砖 然而,我在传单中找不到任何关于使用自定义地图的信息。我是否以某种方式提供包含X、Y、Z信息范围的传单?我给它每个瓷砖的像素大小吗?这是它自己想出来的吗 把我的问题归结为一个简洁的问题:我需要做什么才能使图像文件可以与PropaleJS一起作为地图平铺,如果需要的话,我需要在前端脚本中做什么?(除了明显指定我的自定义URL之外)您正在寻找一个。在此Tile

我的瓷砖是否需要符合任何特定规格

我有一个大的图像文件,我想把它变成一个地图与传单。我将使用Python图像库将其切割成我需要的所有不同的瓷砖

然而,我在传单中找不到任何关于使用自定义地图的信息。我是否以某种方式提供包含X、Y、Z信息范围的传单?我给它每个瓷砖的像素大小吗?这是它自己想出来的吗

把我的问题归结为一个简洁的问题:我需要做什么才能使图像文件可以与PropaleJS一起作为地图平铺,如果需要的话,我需要在前端脚本中做什么?(除了明显指定我的自定义URL之外)

您正在寻找一个。在此TileLayer中,您使用如下模板为要获取的图像提供URL:

http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png
当您处于指定的缩放、x和y级别时,传单将自动获取您提供的URL上的互动程序


但是,根据您想要显示的图像,大部分工作将在平铺生成中进行。默认情况下,平铺的大小为256x256px(可以在平铺层选项中更改),如果使用的是地理数据,则使用的投影为墨卡托投影。可能需要一些时间才能获得正确的磁贴ID。关于tile 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

仅供阅读本文的读者参考-瓷砖不必为256x256px。您可以在TileLayer选项中设置正方形边的长度-256px是默认值,但是(通常会使您的生活更轻松)也有用于传单的“插件”,可以对从外部映射源(或从所示页面)检索的信息进行本地缓存。请注意,在您的代码中,需要为处理数据库中不存在的平铺坐标请求做一些准备。这可能在
DB.GetTile()
例程中,该例程应该提供一个虚拟磁贴,或者安排返回一个
404notfound
。(在后一种情况下,传单可以编程为提供自己的“缺少的瓷砖”瓷砖。)我观察到传单确实发出请求,例如“负坐标”,并且相当频繁。谢谢你有趣的评论。我注意到有人要我没有的瓷砖。我相信404是合适的回应,因为传单可以(也应该)处理这样的问题gracefully@MikeRobinson我们如何优化瓷砖基本相同的情况(如水体上的瓷砖)我们可以得到传单来兑现之前看到的瓷砖吗?