RUS  ENG 

Использование метода CopyLayer

Страницы: 1
RSS
Использование метода CopyLayer
 
Доброго времени суток.
Мне необходимо скопировать структуру из существующего слоя в слой в памяти. Можно ли в этом случае использовать метод CopyLayer? Можно еще привести пример его использования, т.к. по описанию не совсем понятен параметр NewLayerPath - имя нового слоя (путь или URL). Необходимо указывать путь к файлу слоя? А если серверная версия тогда? А если слой в памяти? Есть ли альтенативные решения моей задачи. Заранее спасибо.
 
В слой в памяти CopyLayer не копирует. Слой в памяти не является полнофункциональным слоем и используется, в основном, для отображения мобильных объектов. Заполняется программно поэлементно.
NewLayerPath для локальных слоев - путь к файлу, для сервера - URL, например zulu://zs.zulugis.ru:6473/piter/doma.zl
 
Спасибо за ответ. Но тогда снова вопрос. Можно ли скопировать в слой в памяти символ с типом и режимом и впоследствии двигать этот символ и менять у него тип и режим? Если да, то подскажите пожалуйста как это сделать. Или копировать можно только простой символ (SimpleSymbol)?
 
Можно. В слое должен быть тип и режимы. Сперва их нужно создать, с нуля, например:

Private Sub Command7_Click()

Dim L As Layer
Dim Id As Long
Dim sId As Long
Dim St As ElemStyle
Dim Symb As Symbol
Dim Ell As ZEllipse

'Создаем кружок
Set Ell = New ZEllipse
Ell.SetEllipse 0, 0, 5, 5, 0, True

'Создаем стиль
Set St = New ElemStyle
St.BorderColor = 0
St.PatColor = 255

'Создаем символ в виде кружка
Set Symb = New Symbol
Symb.AddEllipse Ell, St

'Добавляем слой в памяти в карту
MapCtrl1.Map.Layers.AddInMemory "111"

Set L = MapCtrl1.Map.Layers.Item(MapCtrl1.Map.Layers.Count)

'Добавляем символ в список символов слоя
sId = L.Symbols.AddItem(Symb)

'Создаем символьный тип
Id = L.ObjectTypes.AddItem("Type1", eSymbol)

St.SymbolID = sId
St.SymbolSize = 100

'Создаем в этом типе режим с созданным символом
L.ObjectTypes.Item(Id).Modes.AddItem "Mode1", St

'Добавляем в слой символьный объект заданного типа и заданного режима
Id = L.AddSymbol(0, 0, Id, 1)

End Sub
 
Спасибо за ответ. Только это немного не то, что хотелось бы. Есть слой с уже созданными символами у которых есть тип и режим(может я неправильно объясняю, я имею в виду то, что называется типы и режимы в структуре слоя). И вот их и хотелось бы скопировать в слой в памяти. В данном случае получается, что их можно только создавать программно?
И еще... Я нашел временное решение своей задачи в виде создания и удаления простого символа в слое в памяти. И в связи с этим вопрос - создание и удаление символа в слое в памяти - это безболезненная операция? Или в этом случае съедаются ресурсы(например память и т.д).
 
Нужно получить от того слоя символ, добавить его в список символов слоя в памяти, создать режим и тип с теми же параметрами, что в старом слое в слое в памяти.
Все данные доступны все можно переписать в другой слой.
Прямой функции скопировать тип с режимами в другой слой нет.
Ресурсы не дожны съедаться.
 
Спасибо
Страницы: 1