首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在LeafletJS中使用自定义地图图像切片?

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

Stack Overflow用户
提问于 2012-11-30 12:23:42
回答 2查看 59.1K关注 0票数 56

我的磁贴需要遵守任何特定的规格吗?

我有一个很大的图像文件,我想用LeafletJS把它转换成地图。我将使用Python图像库将其切割成我需要的所有不同的瓦片。

然而,我在Leaflet中找不到任何有关使用自定义地图的信息。我是否以某种方式提供了X,Y,Z信息范围的传单?我要给它每个瓦片的像素大小吗?它能自己解决这个问题吗?

将我的问题简化为一个简洁的问题:我需要做什么才能使图像文件在LeafletJS中可以兼作地图瓦片,如果有的话,我需要在我的前端脚本中做什么?(除了明显指定我的自定义URL之外)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-30 16:22:07

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

代码语言:javascript
复制
http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png

当您处于指定的缩放、x和y级别时,Leaflet将自动获取您提供的URL上的磁贴。

根据您想要显示的图像,工作的更大部分将在平铺生成中。默认情况下,Tiles的大小为256x256px (可以在TileLayer选项中更改),如果您使用的是地理数据,则使用的投影是墨卡托投影。可能需要一些时间才能获得正确的磁贴It。Here is an example介绍了磁贴ids的工作原理。

票数 21
EN

Stack Overflow用户

发布于 2015-04-21 21:30:35

您甚至可以直接从数据库中提供磁贴。

leaflet指定的格式非常灵活。

Leaflet只是使用z,x,y占位符来请求特定的平铺。

例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13638969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档