www.map-info.ru :: Просмотр темы - Работа с объектами на карте
Заказать MapInfo Professional 10
На главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - 'MapX' Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Andrey



Зарегистрирован: 08.10.2006
Сообщения: 4

СообщениеДобавлено: Пн Фев 05, 2007 1:01 am    Заголовок сообщения: Работа с объектами на карте Добавить ответ со ссылкой на данный текст

Очень хочеться узнать, как получить идентификатор объекта с карты и использовать его для дальнейшей работы, например с базой данных...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kulechek



Зарегистрирован: 09.02.2007
Сообщения: 2

СообщениеДобавлено: Пт Фев 09, 2007 5:49 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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

для начала необходимо выбрать объект на карте:
// по всем слоям проходим начиная с верхнего
for ($i = 1; $i < GetLayersCount() + 1; $i++ )
{
// если слой видимый и выбираемый
if( GetLayerVisible($i) && GetLayerSelectable($i) )
{
// выбираем со слоя с номером $i в точке [X, Y]
$objPoint = new COM($cMapXPoint);
ConvertScreenCoordsToMap($x, $y, $mapX, $mapY);

$objPoint->Set($mapX, $mapY);
$Features = $cMapXObject->Layers[$LayerCnt]->SearchAtPoint($objPoint);
$objPoint = null;
если там есть какие либо объекты, то выходим при этом запоминаем индекс слоя, если нет то продолжаем поиск до последнего слоя
if ($objFeatures->Count != 0)
{
$iLayerCnt = $i;
return $objFeatures;
}
}
}
создаем дата сет для этого слоя
$objDSCnt = AddLayerDataSet($iLayerCnt, GetLayerName($iLayerCnt));

// по всем выбранным объектам проходим
for ($i = 1; $i < $Features->Count + 1; $i++ )
// по всем полям выбранного объекта
for ($j = 1; $j < $objDSCnt->Fields->Count + 1; $j++ )
{
// выбираем текущее поле
$objFields = $objDSCnt->Fields($j);
// это его имя (как само поле называется)
$objFields->Name
// это его значение
$objDSCnt->Value($Features->Item($i) ,$objFields);
}

Ну вот собственно и все.. стоп. есть еще одно НО, перед тем как передать координаты, не забуть привести их систему координат карты:
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - 'MapX' Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru