2012-11-30 11 views
43

私のタイルは特定のスペックに従う必要がありますか?LeafletJSでカスタムマップ画像タイルを使用していますか?

私はLeafletJSで地図に変換したい大きな画像ファイルを持っています。私はPython Imaging Libraryを使用して、必要なすべてのタイルに分割します。

しかし、リーフレットでカスタムマップを使用することについての情報はありません。リーフレットには何とかX、Y、Z情報の範囲を提供していますか?私はそれに各タイルのピクセルサイズを与えますか?それはそれを単独で把握していますか?

私の質問を簡潔な質問にする:LeafletJSで地図タイルとして倍増できる画像ファイルを持つためには何が必要なのですか?フロントエンドで何をする必要がありますかスクリプト? (私のカスタムURLの明白な指定を超えて)

答えて

11

あなたはTileLayerを探しています。このTileLayerでは、あなたがこのようなテンプレートとリーフレットするために被フェッチ画像のURL与える:あなたが指定したズーム、xとyのレベルの場合

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

を、リーフレットは、自動的にタイルを取得しますあなたが与えたURLに

ただし、表示する画像によっては、作業の大部分がタイル生成になります。タイルは常に256x256ピクセルのサイズにする必要があります。ジオデータを使用している場合は、メルカトル投影法を使用します。タイルIDを正しく取得するまでには時間がかかることがあります。タイルIDの仕組みについてはHere is an exampleを参照してください。

+9

L.tileLayer('http://localhost/tileserver/tile.aspx?z={z}&x={x}&y={y}', { minZoom: 7, maxZoom: 16, attribution: 'My Tile Server' }).addTo(map); 

- タイルは256x256pxする必要はありません。 TileLayerオプションで正方形の一辺の長さを設定することができます - しかし、256pxがデフォルトです(そして、一般的にあなたの人生を楽にします) – thisissami

5

データベースからタイルを直接提供することもできます。

フォーマットリーフレットでは、非常に柔軟性があります。

リーフレットはz、x、yプレースホルダを使用して特定のタイルを要求します。例えば

Tiles.aspxこれを読んで誰のためJUST FYI

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 
+1

リーフレットのための "プラグイン"もあります。外部マッピングソースから(または、表示されているようなページから)取得されました。 –

+1

あなたのコードでは、存在しないタイル座標の要求を処理するための*いくつかの準備が必要ですあなたのデータベース。これはあなたの 'DB.GetTile()'ルーチンにあるかもしれません。ダミーのタイルを提供するか、 '404 Not Found'を返すようにしなければなりません。 (後者の場合、リーフレットは自分自身の「欠けているタイル」タイルを提供するようにプログラムすることができます)リーフレット*は「負の座標」などの要求を発行し、 。 –

+0

興味深いコメントありがとう。私は持っていないタイルの要求に気づいた。私は404がリーフレットがそのように優雅に扱うことができる(そしてすべきである)ように適切な応答であると信じている –

関連する問題