WmsLayer property (Layer)

Возвращает интерфейс IWmsLayer для работы со слоем WMS.

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

Layer

Синтаксис:

Visual Basic:

Property WmsLayer As IWmsLayer

read-only

Описание:

Свойство возвращается всегда, независимо от того, является ли слой слоем WMS. Если слой не является слоем WMS, то методы возвращаемого интерфейса не будут выполнять над слоем никаких действий.

Вид слоя показывает свойство Type: у слоя WMS оно равно 102, у серверного слоя WMS - 103, у обычного векторного слоя - 70.

На обычном слое объект отдается, исключения не возникает, но данных от него не получить: и GetInfoByXY, и GetFeatureInfo возвращают пустое значение. Проверять вид слоя нужно заранее.

Пример:

Visual Basic:

Sub Layer_WmsLayer
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
S = "Слой " & L.UserName & ", тип " & L.Type
If L.Type <> 102 And L.Type <> 103 Then
  S = S & vbCrLf & "это не слой WMS: методы IWmsLayer данных не дадут"
End If
'Объект отдается в любом случае
Set W = L.WmsLayer
'Спрашиваем описание в середине слоя
Set R = L.GetBoundsRectangle
X = (R.Xmin + R.Xmax) / 2
Y = (R.Ymin + R.Ymax) / 2
S = S & vbCrLf & "GetInfoByXY: [" & CStr(W.GetInfoByXY(X, Y, 10)) & "]"
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_WmsLayer():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    print("Слой", L.UserName, ", тип", L.Type)
    if L.Type not in (102, 103):
        print("это не слой WMS: методы IWmsLayer данных не дадут")
    # Объект отдается в любом случае
    w = L.WmsLayer
    # Спрашиваем описание в середине слоя
    R = L.GetBoundsRectangle()
    x = (R.Xmin + R.Xmax) / 2
    y = (R.Ymin + R.Ymax) / 2
    print("GetInfoByXY:", repr(w.GetInfoByXY(x, y, 10)))