DrawElemIDLabel method (Layer)

Выводит пользовательский текст в надписи для указанного элемента.

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

Layer

Синтаксис:

Visual Basic:

Function DrawElemIDLabel(ElemID As Long, text As String) As Boolean

ElemID - ключ объекта слоя, для которого выводится надпись.

text - текст, выводимый на карту вместо стандартной надписи.

Описание:

Если для слоя созданы и подключены надписи, то, если существует такая необходимость, можно выводить свои данные на карту, перехватывая событие OnDrawUserLabels. При этом стиль вывода надписей остается прежний, изменяется только текст надписи.

Метод работает внутри сеанса вывода надписей, открытого методом DrawLabelsInit при отрисовке карты. Вне такого сеанса он ничего не выводит и возвращает False.

Надпись появляется на карте только в сеансе, открытом описателем отрисовки из события: если сеанс открыт описателем, который дает метод GetDrawHandle вида карты вне отрисовки, метод возвращает True, но текст на карту не выводится.

В случае неудачи возникает исключение с одним из следующих кодов:

Код

Описание

513

Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.

Пример:

Пример — обработчик события OnDrawUserLabels элемента управления MapCtrl с именем MapCtrl1, в который загружена карта со слоем с подключенными надписями. Ключи объектов, которым выводятся надписи, дает DrawLabelsInit, а завершает вывод DrawLabelsClose. Подключены ли к слою надписи, показывает свойство LabelsID.

Visual Basic:

Private Sub MapCtrl1_OnDrawUserLabels(ByVal DrawHandle As Long, ByVal LayerIndex As Long)

Dim i As Long
Dim els As ElementKeys

'если к слою не подключены надписи, то выход из процедуры
If MapCtrl1.Map.Layers.Item(LayerIndex).LabelsID = -1 Then Exit Sub

'получение ключей объектов, для которых подключены надписи и которые видны на карте
Set els = MapCtrl1.Map.Layers.Item(LayerIndex).DrawLabelsInit(DrawHandle, -1)

For i = 1 To els.Count
'вместо стандартной надписи выводится ключ объекта (ID)
MapCtrl1.Map.Layers.Item(LayerIndex).DrawElemIDLabel els.Item(i), Str(els.Item(i))

Next i

MapCtrl1.Map.Layers.Item(LayerIndex).DrawLabelsClose

End Sub