GetLevelLimits method (ITileLayer)

Возвращает прямоугольник ZRectangle с граничными значениями номеров плиток по X и Y для заданного уровня слоя.

Применяется к:

ITileLayer

Синтаксис:

Visual Basic:

Function GetLevelLimits(z As Long) As ZRectangle

z - уровень тайловой системы.

Описание:

В прямоугольнике лежат не координаты, а номера плиток. Нижние границы равны нулю, верхние — двойке в степени z: на нулевом уровне это 0 и 1, на десятом — 0 и 1024. Допустимые номера плиток, соответственно, лежат от 0 до 2^z - 1.

Метод GetTileBoundsRectangle номера не проверяет, поэтому границы удобно брать отсюда.

Если слой не тайловый, метод возвращает Nothing — в отличие от GetShiftX, который и в этом случае отдаёт 0. Интерфейс возвращается для любого слоя, а не только для тайлового, поэтому тип слоя следует проверять отдельно: свойство Type должно быть равно eTileLayer (108) для локального слоя или eRemoteTileLayer (109) для слоя на ZuluServer, см. eLayerType.

Пример:

Visual Basic:

Sub ITileLayer_GetLevelLimits
'Создаем тайловый слой OpenStreetMap
Set Def = CreateObject("ZuluLib.TileLayerDef")
Def.SetCRSCode "EPSG:3857"
Def.SetModel 3
Def.SetQueryTemplateString "http://a.tile.openstreetmap.org/"
Set Tools = CreateObject("ZuluLib.ZuluTools")
Tools.TileLayerCreate "C:\Data\osm.zww", Def
'Открываем его и берем интерфейс тайлового слоя
Set L = CreateObject("ZuluLib.Layer")
L.Open "C:\Data\osm.zww"
Set T = L.TileLayer
Set lim = T.GetLevelLimits(10)
MsgBox "Номера плиток на уровне 10:" & vbCrLf & _
       "X от " & lim.Xmin & " до " & lim.Xmax & vbCrLf & _
       "Y от " & lim.Ymin & " до " & lim.Ymax
End Sub

Python:

import zulu

def Macro_ITileLayer_GetLevelLimits():
    # Создаем тайловый слой OpenStreetMap
    Def = zulu.TileLayerDef()
    Def.SetCRSCode("EPSG:3857")
    Def.SetModel(3)
    Def.SetQueryTemplateString("http://a.tile.openstreetmap.org/")
    zulu.ZuluTools().TileLayerCreate(r"C:\Data\osm.zww", Def)
    # Открываем его и берем интерфейс тайлового слоя
    L = zulu.Layer()
    L.Open(r"C:\Data\osm.zww")
    T = L.TileLayer
    lim = T.GetLevelLimits(10)
    print("Номера плиток на уровне 10:")
    print("  X от", lim.Xmin, "до", lim.Xmax)
    print("  Y от", lim.Ymin, "до", lim.Ymax)