Подключение внешних слоев

В компоненте MapViewer ActiveX есть возможность в качестве источника данных использовать различные хранилища данных. Такими ресурсами могут быть:
• СУБД PostgreSQL;
• СУБД MySQL;
• СУБД SqLite;
• Ресурсы OGR.
В качестве работы с внешним источником данных мы будем рассматривать работу с СУБД PostgreSQL.
Для загрузки слоев из базы данных PostgreSQL сначала необходимо создать специальный объект типа ExternalSource из пространства имен mvMapLib. Посредством этого объекта будет осуществляться соединение с базой и загрузка слоев:

ExternalSource postgres; postgres = 
axMapLib1 .CreateExternalSource(mvExternalSourceTypes.mvPostGIS);

Затем необходимо указать параметры соединения с базой, а также проекцию в которой находятся пространственные данные в базе (srid) и подключиться к ней:

int srid = 32639; postgres.prepare(“host =hostname port=portnumber user=
username password=pass dbname=databasename”, srid); postgres.Connect();

Можно проверить, было ли уже установлено соединение, используя следующую функцию:

 if(!postgres.isConnected())
 {
 postgres.Connect();
 }

Непосредственно при создании слоя необходимо указать параметры доступа к таблице с пространственными данными: схему, название таблицы, поле первичного ключа, поле с геометрией, поле из которого будет формироваться подпись для объектов (если такого поля нет, указать пустую строку), поле с указанием прикрепленных к объектам слоя изображений, а также указать название нового создаваемого слоя:

String nameScheme = “sys_scheme”;
 String nameTable = “table”;
 String newLayerName = “Layer name”;
 String tablePkFieldName = “id”;
 String tableGeomFieldName = “geom”;
 String labelFieldName = “labelfield”;
 String imageFieldName = “imagefield”;
 String imageXFieldName = “imagexfield”;
 mvLayer layer = postgres.addLayer(nameSheme + "." +nameTable,
 newLayerName , tablePkFieldName, tableGeomFieldName ,
 labelFieldName, "", "", imageFieldName, imageXFieldName);

При разработке своего проекта необходимо будет учитывать, что во внешние слои загружаются только те данные, которые должны отображаться на карте. Соответственно те данные, которые вышли из области видимости, выгружаются.