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);
}
Ну вот собственно и все.. стоп. есть еще одно НО, перед тем как передать координаты, не забуть привести их систему координат карты: |
|