На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Не работает функция GetShotWayAndCreateObject

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 След.
RSS
Не работает функция GetShotWayAndCreateObject
 
Роман, я разобрался оказывается нужно было для ObjNet передать имя карты))
На данный момент я получаю два ближайших узла по клику на карту.
Теперь пытаюсь проложить маршрут и выделить его, но пока не получается((
Подскажите, что не так делаю??
MapView.ConvertMetric(ref RoadStart.x, ref RoadStart.y, TxPPLACE.PP_PICTURE, TxPPLACE.PP_PLANE);
               MapObj.St yle = TxObjectStyle.OS_NORMAL;
               var tdp1 = new TxDoublePoint { X = RoadStart.x, Y = RoadStart.y };
               MapNet1.GetNodeByPoint(MapObj.ObjHandle, ref tdp1);
               MapObj.St yle = TxObjectStyle.OS_SELECT;

               MapView.ConvertMetric(ref RoadFinish.x, ref RoadFinish.y, TxPPLACE.PP_PICTURE, TxPPLACE.PP_PLANE);
               MapObj.St yle = TxObjectStyle.OS_NORMAL;
               var tdp2 = new TxDoublePoint { X = RoadFinish.x, Y = RoadFinish.y };
               MapNet1.GetNodeByPoint(MapObj.ObjHandle, ref tdp2);
               MapObj.St yle = TxObjectStyle.OS_SELECT;

               MapNet1.GetShotWayByPointAndCreateObject(MapObj.ObjHandle, ref tdp1, ref tdp2);

               MapObj.St yle = TxObjectStyle.OS_SELECT;

               MapObj.Commit();
               MapObj.Repaint();
               MapView.Refresh();
 
После вызова GetNodeByPoint в переменных tdp1 и tdp2 действительно координаты найденных узлов?
Рекомендую использовать отдельные MapObj (ObjHandle) для поиска ближайших точек и самого маршрута.
После GetShotWayByPointAndCreateObject проверьте, что у Вас в MapObj в части метрики.
 
Роман, я проверил как Вы написали
1. После вызова GetNodeByPoint в переменных tdp1 и tdp2 у меня действительно координаты найденных узлов!
2. Использовать отдельные MapObj (ObjHandle) для поиска ближайших точек и самого маршрута я так и не понял ведь они быдут одинаковые
хотя я попробывал сделать так:

int r = MapObj.CreateObjectByExcode(1, (int)TxMetricType.IDFLOAT2, 10911, (int)TxObjectLocal.OL_LINE); // не знаю правильно это или нет??

3. Проверил MapObj в части метрики скрины прилагаю.
1.3.PNG (21.06 КБ)
1.2.PNG (16.42 КБ)
1.1.PNG (25.58 КБ)
 
Цитата
int r = MapObj.CreateObjectByExcode(1, (int)TxMetricType.IDFLOAT2, 10911, (int)TxObjectLocal.OL_LINE); // не знаю правильно это или нет??
Если r <> 0, то правильно.

Переменную r передаете в GetShotWayByPointAndCreateObject ? и всё равно возвращается 0?

По скриншотам не понятно, что проверялось, с чем сравнивалось.
 
Вот Роман скидываю Вам скрин кода, который у меня на данный момент.
Поиск ближайших узлов определяет правильно.
Но ни как не могу выделить построенный маршрут на карте.  
 
Цитата
Александр Махин написал:
Вот Роман скидываю Вам скрин кода, который у меня на данный момент.
Поиск ближайших узлов определяет правильно.
Но ни как не могу выделить построенный маршрут на карте.    
 
 
Здравствуйте, господа разработчики!!
Подскажите пожалуйста как отобразить уже построенный маршрут на карте.
Все вроде бы правильно!
И еще вопрос, что необходимо передавать в параметр "info" мой код я выше указывал.
При вызове функции MapNet1.GetShotWayDlgAndCreateObject открывается окно далее я нажимаю на кнопку "Построить" и маршрут строится.(Это я описывал выше)
Но как его отобразить на карте ??? А если нажимаю на кнопку "Сохранить маршрут в объект", то пишет что библиотека MAPSCENA.DLL не найдена.
Как мне программно записать маршрут в объект???
55.PNG (28.32 КБ)
 
В переменную info необходимо передать hobj. Выделение аналогично тому, как подсвечивали ближайшую точку.
Пример:
Код
       MapObj2.St yle = TxObjectStyle.OS_NORMAL;
       MapNet1.GetShotWayByPointAndCreateObject(MapObj2.ObjHandle, ref tdp1, ref tdp2);
       MapObj2.St yle = TxObjectStyle.OS_SELECT;
       MapObj2.Center;
Сохранить метрику можно перебрав метрику объекта смотрите методы класса Metric  - MapObj2.Metric.Points

Сообщение в диалоге проверим.
 
Роман, если Вас не затруднит помочь с кодом на C#.
Я уже практически все перепробывал (2 недели бьюсь) ни чего не получается по части выделения маршрута. Ни как не могу понять первый ближайший узел находит, второй ближайший узел находит маршрут строится, но ни как не могу его выделить.
Те функции типа HOBJ и прочее в C# их нет. На тех скринах, что ранее скидывал видно, что если использовать функцию MapNet1.GetShotWayDlgAndCreateObject, то маршрут строится по найденым узлам - значит я правильно все сделал!
Прошу Вас оказать помощь по части кода, может быть у Вас кто такое делал на C#.

Вот мой полный текст кода:

if (RoadObj.Checked) //Построение маршрута движения
           {
               MapNet1.NetSitName = MapView.MapFileName;
               MapNet1.NetRscName = "road25.rsc";
               if (MapNet1.OpenGraph(MapView.MapHandle, MapNet1.NetSitHandle) == 0) MessageBox.Show("Ошибка открытия ГРАФА ДОРОГ!");
               
               if (RoadStart.x != 0 && RoadFinish.x != 0) return;
               if (RoadStart.x == 0)
               {
                   RoadStart.x = e.x;
                   RoadStart.y = e.y;
                   return;
               }
               RoadFinish.x = e.x;
               RoadFinish.y = e.y;


               MapObj.SetObjectByDLg(true);
               ObjCode = MapObj.ExCode;

               
               int u = MapObj.SetObjectByExcode((int)TxMetricType.IDFLOAT2, ObjCode, (int)TxObjectLocal.OL_LINE);

               MapView.ConvertMetric(ref RoadStart.x, ref RoadStart.y, TxPPLACE.PP_PICTURE, TxPPLACE.PP_PLANE);
               MapObj.St yle = TxObjectStyle.OS_NORMAL;
               var tdp1 = new TxDoublePoint { X = RoadStart.x, Y = RoadStart.y };
               MapNet1.GetNodeByPoint(u, ref tdp1);
               MapObj.StyleSelect = TxObjectStyleSelect.SEL_USERFUNC;
               
               MapView.ConvertMetric(ref RoadFinish.x, ref RoadFinish.y, TxPPLACE.PP_PICTURE, TxPPLACE.PP_PLANE);
               MapObj.St yle = TxObjectStyle.OS_NORMAL;
               var tdp2 = new TxDoublePoint { X = RoadFinish.x, Y = RoadFinish.y };
               MapNet1.GetNodeByPoint(u, ref tdp2);
               MapObj.StyleSelect = TxObjectStyleSelect.SEL_USERFUNC;

               MapNet1.GetShotWayByPointAndCreateObject(MapObj.ObjHandle, ref tdp1, ref tdp2);

               MapObj.Commit();
               MapObj.Repaint();
           
               MapNet1.CloseGraph(MapNet1.GraphHandle);
               
               RoadObj.Checked = false;
           }
 
Здравствуйте, Роман!!
У меня еще один маленький вопрос в руководстве программиста написано:

axMapNet.GetFastWay Найти самый быстрый путь между узлами сети.
function GetFastWay(NodeStart, NodeFinish: integer; speed : double): integer;
Описание: Метод производит выборку ребер сети, составляющих оптимальный путь между двумя узлами, с точки зрения затрат времени на его прохождение, и заполняет ею контекст cSelectForNet. Граф сети предварительно должен быть открыт методомOpenGraph или создан BuildNet .Начало и конец пути указываются идентификаторами объектов в памяти в параметрах NodeStart и NodeFinish соответственно. В параметре speed указывается средняя скорость в км/ч для ребер, составляющих возможный путь, у которых в соответствующей семантике не указана их реальная скорость прохождения.
При ошибке возвращает ноль, иначе – количество ребер входящих в найденный путь.

Вопрос: какие параметры я должен передать в NodeStart и NodeFinish ?? И откуда их мне забрать??
Получается я нахожу ближайший узел и могу забрать только номер дуги и номер сети! И что с ними дальше делать??
Страницы: Пред. 1 2 3 4 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности