Подтвердить что ты не робот

Использование пользовательских графических изображений в LeafletJS?

Могут ли мои плитки придерживаться каких-либо конкретных спецификаций?

У меня есть большой файл изображения, который я бы хотел превратить в карту с LeafletJS. Я собираюсь использовать библиотеку изображений Python, чтобы разрезать ее на все нужные мне фрагменты.

Однако я не могу найти никакой информации об использовании пользовательских карт в Leaflet. Предоставляю ли я Лифлет диапазон X, Y, Z info? Я даю ему размер пикселя каждой плитки? Означает ли это это самостоятельно?

Чтобы поставить мой вопрос в один краткий вопрос: что мне нужно сделать, чтобы файлы изображений, которые можно удвоить в виде картографических фрагментов с помощью LeafletJS, и что, если что-нибудь, мне нужно сделать в моем интерфейсе script? (за пределами очевидного указания моего пользовательского URL-адреса)

4b9b3361

Ответ 1

Вы ищете TileLayer. В этом TileLayer вы предоставляете URL-адрес для изображений, подлежащих извлечению, для листовки с таким шаблоном:

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

Когда вы находитесь на указанном уровне масштабирования, x и y, Leaflet автоматически извлечет плитки по указанному вами URL.

В зависимости от того, какое изображение вы хотите показать, большая часть работы, тем не менее, будет происходить при создании плитки. Плитки по умолчанию имеют размер 256x256px (может быть изменен в опциях TileLayer), и если вы используете геоданные, то используется проекция Меркатора. Это может занять некоторое время, чтобы получить правильные идентификаторы плитки. Вот пример того, как работают идентификаторы плитки.

Ответ 2

Вы даже можете обслуживать плитки напрямую из базы данных.

Указанный формат буклета очень гибкий.

Листовка просто использует держатели 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