Возвращает прямоугольник ZRectangle с граничными значениями номеров плиток по X и Y для заданного уровня слоя.
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 SubPython:
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)