タイルは特定の仕様に準拠する必要がありますか?
LeafletJSでマップに変換したい大きな画像ファイルがあります。 Python Imaging Libraryを使用して、必要なさまざまなタイルすべてに分割します。
ただし、リーフレットでのカスタムマップの使用に関する情報は見つかりません。 X、Y、Z情報の範囲を何らかの方法でLeafletに提供しますか?各タイルのピクセルサイズを指定しますか?それ自体でこれを把握していますか?
私の質問を1つの簡潔な質問にまとめるには、LeafletJSでマップタイルを兼ねることができる画像ファイルを作成するために何をする必要がありますか。 (私のカスタムURLの明白な指定を超えて)
TileLayer を探しています。このTileLayerでは、取得する画像のURLを、次のようなテンプレートでリーフレットに渡します。
http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png
指定したズーム、x、yレベルにいるとき、Leafletは指定したURLのタイルを自動的に取得します。
ただし、表示する画像に応じて、作業の大部分はタイル生成になります。タイルのデフォルトのサイズは256x256pxです(TileLayerオプションで変更できます)。ジオデータを使用している場合、使用される投影法はメルカトル図法です。タイルIDを正しく取得するには時間がかかる場合があります。 ここに例があります タイルIDの動作方法について。
データベースから直接タイルを提供することもできます。
リーフレットが指定する形式は非常に柔軟です。
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