2012-11-30 7 views
43

내 타일이 특정 사양을 준수해야합니까?LeafletJS에서 사용자 정의지도 이미지 타일 사용?

나는 LeafletJS로지도로 전환하고 싶은 큰 이미지 파일을 가지고 있습니다. 파이썬 이미징 라이브러리를 사용하여 필자가 필요로하는 모든 타일로자를 것입니다.

그러나 전단지에서 맞춤지도 사용에 대한 정보를 찾을 수 없습니다. 내가 전단지에 X, Y, Z 정보의 범위를 어떻게 든 제공합니까? 각 타일의 픽셀 크기를 지정합니까? 그것은 스스로 알아 낸 것입니까?

내 질문을 간결한 질문에 넣으려면 : LeafletJS를 사용하여지도 타일로 이중화 할 수있는 이미지 파일을 갖기 위해해야 ​​할 일은 무엇인지, 내 프론트 엔드에서해야 할 일은 무엇입니까? 스크립트? (내 사용자 정의 URL의 명확한 지정을 넘어)

답변

11

TileLayer을 찾고 있습니다. 이 TileLayer에서는 URL을주는 투 - 수 - 가져온이 같은 템플릿으로 리플릿하는 이미지 : 당신은 지정된 줌, x와 y 수준에있는 경우

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

이 리플릿은 자동으로 타일을 가져옵니다 당신이 준 URL에.

표시하려는 이미지에 따라 작업의 더 큰 부분이 타일 생성에있게됩니다. 타일의 크기는 항상 256x256 픽셀이어야하며, 지리 데이터를 사용하는 경우 Mercator 투영이 사용됩니다. 타일 ​​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이 글을 읽는 사람을 위해 그냥 참고로

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

흥미로운 의견을 보내 주셔서 감사합니다. 내가 가지고 있지 않은 타일에 대한 요청을 발견했습니다. 나는 전단이 합법적으로 다룰 수있는 것처럼 적절한 답을 알 수있다. –