Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Лена Гость
|
Добавлено: Вт Апр 11, 2006 3:39 pm Заголовок сообщения: Замер расстояний в MapX |
|
|
Как при помощи MapX мерить расстояния на карте?
Приведите, пожалуйста, правильный код события Map1PolyToolUsed (Builder или Делфи). Чтобы пользователь мог вычислить расстояний на карте, используя инструмент и получить общую сумму при двойном щелчке.
Спасибо. |
|
Вернуться к началу |
|
|
Лена Гость
|
Добавлено: Вт Апр 11, 2006 3:39 pm Заголовок сообщения: |
|
|
Сама разобралась:
if ( ToolNum != 4)
return;
if (Flags == miPolyToolEnd)
{
Variant X;
X =(Points);
CMapXFeature *f;
f = Map1->FeatureFactory->CreateLine(X);
int d = f->Length;
sStatusBar1->Panels->Items[2]->Text = AnsiString("Расстояние: ") + AnsiString(d) + AnsiString(" м");
} |
|
Вернуться к началу |
|
|
КД
Зарегистрирован: 30.10.2007 Сообщения: 25
|
Добавлено: Пт Ноя 07, 2008 6:47 am Заголовок сообщения: |
|
|
Лена, не могли бы Вы помочь разобраться? А то я не программер, и Ваш код труден для моего понимания. Та же задача – измерить расстояние с помощью полилинии. Т.е. чтобы выводилась длина каждого отрезка, а в конце – общая (или отдельно, если можно). Вы ведь именно так сделали? Обычная линия получается, но там проще. А здесь в PolyToolUsed нет координат. Среда разработки – Access.
Для инструмента "Линейка" объявлена константа:
Public Const miRulerCustomTool = 500
При загрузке формы создаем этот инструмент:
Me!mapxPointsLeg.CreateCustomTool miRulerCustomTool, miToolTypePoly, miLabelCursor, miLabelCursor, miLabelCursor
Включили инструмент "Линейка"
Me!mapxPointsLeg.CurrentTool = miRulerCustomTool
Используем инструмент
Private Sub mapxPointsLeg_PolyToolUsed(ByVal ToolNum As Integer, ByVal Flags As Long, _
ByVal Points As Object, ByVal bShift As Boolean, ByVal bCtrl As Boolean, EnableDefault As Boolean)
'определим в каком состоянии находится инструмент
Select Case Flags
Case miPolyToolBegin 'начали использование инструмента
Select Case ToolNum 'определяем какого именно инструмента
Case miRulerCustomTool 'используем "Линейку"
'обнуляем поле, где выводится пройденное расстояние
Me!lblDistance.Caption = "дистанция:"
End Select
Case miPolyToolInProgress 'продолжается использование инструмента
Select Case ToolNum 'определяем какого именно инструмента
Case miRulerCustomTool 'используем "Линейку"
End Select
Case miPolyToolEnd 'закончили использование инструмента по двойному щелчку или Enter
Select Case ToolNum 'определяем какого именно инструмента
Case miRulerCustomTool 'используем "Линейку"
End Select
Case miPolyToolEndEscaped 'закончили использование инструмента по Escape
Select Case ToolNum 'определяем какого именно инструмента
Case miRulerCustomTool 'используем "Линейку"
End Select
End Select
End Sub
Вроде бы Вы создали новый объект? но как именно? |
|
Вернуться к началу |
|
|
КД
Зарегистрирован: 30.10.2007 Сообщения: 25
|
Добавлено: Ср Ноя 26, 2008 6:59 pm Заголовок сообщения: |
|
|
Разобрался. |
|
Вернуться к началу |
|
|
|