Возвращает интерфейс IWmsLayer для работы со слоем WMS.
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 SubPython:
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)))