InMemoryLayer property (Layer)

Объект, предоставляющий набор дополнительных методов для работы со слоем в памяти.

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

Layer

Синтаксис:

Property InMemoryLayer As InMemoryLayer

Описание:

Через этот объект слою в памяти задают то, чего нет у обычного слоя: собственные данные объекта (SetElemData и GetElemData), мигание (SetBlink), слежение (StartTracking, IsTracking), подпись объекта (SetLabel) и флаги слоя (SetFlags, GetFlags).

Свойство отдает объект у любого слоя, но осмысленно оно для слоя в памяти - того, который создает метод AddInMemory коллекции слоев карты и у которого свойство InMemory равно True.

Пример:

Visual Basic:

Sub Layer_InMemoryLayer
'Добавляем в карту слой в памяти
Set M = Zulu.ActiveMapDoc
Idx = M.Layers.AddInMemory("Проба в памяти")
Set L = M.Layers.Item(Idx)
'Кладем в него линию
Set PL = CreateObject("ZuluLib.PolyLine")
PL.AddPoint 0, 0
PL.AddPoint 1000, 1000
Key = L.AddPolyLine(PL, CreateObject("ZuluLib.ElemStyle"), -1, -1)
'Возможности слоя в памяти
Set IML = L.InMemoryLayer
IML.SetElemData Key, 777
IML.SetBlink Key, 300
IML.StartTracking Key
S = "Линия " & Key & " в слое " & L.Name
S = S & vbCrLf & "свои данные: " & IML.GetElemData(Key)
S = S & vbCrLf & "мигание: " & IML.GetBlink(Key)
S = S & vbCrLf & "слежение: " & IML.IsTracking(Key)
IML.StopTracking Key
'Убираем слой из карты
M.Layers.Remove Idx
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_InMemoryLayer():
    # Добавляем в карту слой в памяти
    M = zulu.App.ActiveMapDoc
    idx = M.Layers.AddInMemory("Проба в памяти")
    L = M.Layers.Item(idx)
    # Кладем в него линию
    pl = zulu.PolyLine()
    pl.AddPoint(0, 0)
    pl.AddPoint(1000, 1000)
    key = L.AddPolyLine(pl, zulu.ElemStyle(), -1, -1)
    # Возможности слоя в памяти
    iml = L.InMemoryLayer
    iml.SetElemData(key, 777)
    iml.SetBlink(key, 300)
    iml.StartTracking(key)
    print("Линия", key, "в слое", L.Name)
    print("свои данные:", iml.GetElemData(key))
    print("мигание:", iml.GetBlink(key))
    print("слежение:", iml.IsTracking(key))
    iml.StopTracking(key)
    # Убираем слой из карты
    M.Layers.Remove(idx)