Интерфейс для работы с тайловым слоем. Возвращается свойством TileLayer объекта Layer.
Входит в состав ZuluGIS 2021 Library.
Тайловый слой хранит не объекты, а готовые растровые плитки, разложенные по уровням масштаба. Параметры этой раскладки — систему координат, модель нумерации, шаблон запроса, диапазон уровней — держит описатель TileLayerDef. Прочитать его у слоя можно методом GetLayerDef, записать обратно — методом SetLayerDef.
Интерфейс возвращается для любого слоя, а не только для тайлового, поэтому тип слоя следует проверять отдельно: свойство Type должно быть равно eTileLayer (108) для локального слоя или eRemoteTileLayer (109) для слоя на ZuluServer, см. eLayerType.
На слое, который тайловым не является, методы интерфейса ничего осмысленного не возвращают: GetLevelLimits отдаёт Nothing, а GetShiftX — 0.
Новый тайловый слой создаётся методом TileLayerCreate объекта ZuluTools.
Visual Basic:
Sub ITileLayer_cls 'Создаем тайловый слой 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 'Тип 108 - локальный тайловый слой Set lim = T.GetLevelLimits(2) MsgBox "Тип слоя: " & L.Type & vbCrLf & _ "Уровни: " & T.GetLayerDef.GetMinLevel & " .. " & T.GetLayerDef.GetMaxLevel & vbCrLf & _ "Плиток на уровне 2: " & lim.Xmax & " на " & lim.Ymax End SubPython:
import zulu def Macro_ITileLayer_cls(): # Создаем тайловый слой 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 # Тип 108 - локальный тайловый слой print("Тип слоя:", L.Type) d = T.GetLayerDef() print("Уровни:", d.GetMinLevel(), "..", d.GetMaxLevel()) lim = T.GetLevelLimits(2) print("Плиток на уровне 2:", lim.Xmax, "на", lim.Ymax)