Инициализация процесса вывода пользовательской надписи.
Visual Basic:
Function DrawLabelsInit(DrawHandle As Long, TypeId As Long) As ElementKeys
DrawHandle - описатель отрисовки, который приходит параметром события OnDrawUserLabels.
TypeId - ID типа типового символа (для примитивов = -1).
Метод возвращает список ключей объектов, к которым подключены надписи и которые в данный момент видны на карте. Если к типу не подключен ни один вариант надписей, коллекция пуста.
Метод открывает сеанс вывода пользовательских надписей: текст задается методом DrawElemIDLabel, а завершается сеанс методом DrawLabelsClose. Вызывать метод имеет смысл только при отрисовке карты, когда есть действующий DrawHandle: с негодным описателем отрисовки метод завершается исключением.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
5
Негодный описатель отрисовки DrawHandle.
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Пример — обработчик события OnDrawUserLabels элемента управления MapCtrl с именем MapCtrl1, в который загружена карта со слоем с подключенными надписями. Подключены ли к слою надписи, показывает свойство 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