Перейти к содержанию
  • Регистрация
  • 0

Вопрос

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

Кстатить при использовании tmapview вместо карты - пустой экран.

вообщем надо передать в tmapview мое местоположение и куда надо идти, затем включить навигацию

Кто занет как сделать ?????????

Или может есть возможность использовать встроенные возможности навигации?

Изменено пользователем Edward Tarasov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0
9 часов назад, Edward Tarasov сказал:

может есть возможность использовать встроенные возможности навигации

Нет понятия "встроенных возможностей навигации".

Вам надо - вы в своем приложении и:

- отслеживайте положение,
- меняйте маркер (положение /поворот),
- смотрите - ушел с маршрута или нет,
- озвучивайте "телку"
- и так далее.

Совокупность всех этих действий и будет тем, что вы подразумеваете под "навигацией".
Только учтите, что пользоваться для прокладки маршрута вы будете чьим-то API. А лицензионные соглашения по их использованию имеют ограничения. Печально будет, если на очередном запуске вашего приложения гугл / яндекс / ситигид / другой провайдер скажут "до свидания".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 часов назад, Edward Tarasov сказал:

Или может есть возможность использовать встроенные возможности навигации?

Проще всего из программы открыть яндекс или другой навигатор с установленными точками куда идти. Самому сделать  нормальный навигатор - это чьё-то платное api, так как бесплатное не гарантированно будет отдавать данные, ну и месяцы работы.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 часа назад, Akad сказал:

Проще всего из программы открыть яндекс или другой навигатор с установленными точками куда идти. Самому сделать  нормальный навигатор - это чьё-то платное api, так как бесплатное не гарантированно будет отдавать данные, ну и месяцы работы.
 

Вот как это сделать?? из программы открыть встроенный навигатор, я об это и спрашивал(Или может есть возможность использовать встроенные возможности навигации?) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Вот так я открываю яндекс навигатор:



var
   Intent: JIntent;
   pm: JPackageManager;
   tempList: JList;
begin
.....
   Intent := TJIntent.Create;
   Intent.setAction
      (StringToJString('ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP'));
   Intent.setPackage(StringToJString('ru.yandex.yandexnavi'));
   pm := SharedActivity.getPackageManager;
   tempList := pm.queryIntentActivities(Intent, 0);

   // Проверяем, установлен ли Яндекс.Навигатор
   if (tempList = nil) or (tempList.SIZE = 0) then
   begin
      // Если нет - будем открывать страничку Навигатора в Google Play
      Intent := TJIntent.Create;
      Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      Intent.setData(StrToJURI('market://details?id=ru.yandex.yandexnavi'));
   end
   else
   begin
      // intent.putExtra(StringToJString('lat_from'), g_CurrentLocation.la);
      // intent.putExtra(StringToJString('lon_from'), g_CurrentLocation.lo);
      Intent.putExtra(StringToJString('lat_to'), StringToJString(las));
      Intent.putExtra(StringToJString('lon_to'), StringToJString(los));
      // intent.putExtra(StringToJString('desc'), StringToJString(LOS));
   end;

   SharedActivity.startActivity(Intent);
end;

Тут задаётся куда. Так же можно откуда и описание (комментировано)

9 минут назад, Edward Tarasov сказал:

Или может есть возможность использовать встроенные возможности навигации?

Их нету. Есть возможность статично что-то отобразить. Не более.

 

Изменено пользователем Akad

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

если кому лень искать инфу, может пригодится... на основе ответа от Akad для google maps

uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText

...
  
var Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  try
    Intent.setData(StrToJURI('google.navigation:q='+GX+','+GY+'&mode=d')); //если есть google maps
  except
    Intent.setData(StrToJURI('https://www.google.com/maps/dir/?api=1&destination='+GX+','+GY+'&travelmode=driving')); //иначе открываем ссылку в браузере
  end;
  SharedActivity.startActivity(Intent);
end;

 

Изменено пользователем beklexx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Всем привет!

Большое спасибо за представленное решение!

Два вопроса по теме:

1. Есть ли возможность реализовать то же самое (передать координаты точки в навигатор и открыть его) в iOS?

2. Сделать все это, не для Google/Яндекс, а для общего случая (в приложении-навигаторе, установленному в девайсе по-умолчанию)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От BelovAlex
      Приветствую!
      Изменить цвет фона или текста заголовка tstringgrid можно на событии DrawColumnHeader. Но хотелось сделать это с помощью стилей в designtime. Есть ли такая возможность?
      Добавление стилей headeritem приводит в конечном счете к полному обвалу 10.2. При изменении свойств headeritem сначала выскакивает ошибка Intrerface not supported, ну, а потом, любимый access violation в fmx250.bpl. В 10.3 ошибка повторилась
    • От Виталий Иванов
      Я недавно или давно писал по поводу почему компилятор при разном наборе USES увеличивает время компиляции где-то от 4 до 10 раз. То есть проект может компилируются за 10 секунд, а при небольших манипуляциях с USES станет компилироваться 40 секунд и тд. Очень хорошо заметно на большом проекте у меня с 1 минуты 18 секунд выросло время компила до 1 часа 40 минут.
      Ну хватит предыстории после анализа зависимостей и проверки логов обращения к файловой системе был выяснен интересный факт :)
      У меня в проекте появился UNIT в котором глобальные методы для так сказать конфигурирования внешнего вида компонентов (компоненты тоже самописные) и получилось следующая ситуация:
      1. В UNIT с формой лежит один из визуальных компонентов назовем его TXXX
      2. соответственно в первом (interface секции) USES данного модуля прописывается автоматом модуль из зависимостей компонента
      3. В нижнем (implementation секции) USES расположен UNIT с глобальными методами (назовем его UNIT XXX) для так сказать конфигурирования его (установка бордера и другой дичи)
      4. В этом UNIT XXX (interface секции) USES также прописаны модули этих визуальных компонентов для передачи их в методы как параметры.
      Так вот из-за такой ошибочной связи время компила увеличивается в разы и по анализу project dependency увеличивается с более менее приемлемых (по времени компиляции) 200 до 500.
      Из сходя из этого начала рефакторинг всего кода и переводить компоненты на интерфейсы это сокращает project dependency проекта и неплохо так, перевод одного компонента который используется почти везде в проекте на интерфейс сократил с 200 до 190 и время компила начала сокращаться.
      Сори за много букавок, но может кому будет интересно или кто с толкнулся с такой проблемой.
       
      Так же в решении и анализе взаимосвязей помог эксперт MMX. 
    • От Дмитрий Потапов
      BlurBehind Control. 
       
      Компонент позволяет использовать размытие, по типу, которое реализовано в WIndows 10, т.е компонент позволяет "размыть" то, что находится под ним.
       
      Пусть и увидел это непосредственно в самой студии на стартовой странице (Welcome Page), но все-таки подумал скинуть ссылку сюда.

      Исходники: https://github.com/grijjy/CodeRage2019/tree/master/BlurBehind
      Видео:

       
    • От Павел Блажеев
      Добрый день. Очень нужна Ваша помощь. 
      Мне необходимо сделать координатную сетку в виде точек. При масштабировании панели количество точек должно изменяться . 
      Хочу все это сделать на канве панели. Унаследовал класс и переопределил procedure   Paint; override;
        Tfield = class(TPanel)
            Constructor Create( parent: TFmxObject);
              procedure   Paint; override;
              Procedure   OnMyClick (Sender: TObject);
          end;

      В теле метода я пробовал рисовать. Экспериментировал и столкнулся с такой проблемой. Ничего не отображается. Нет никаких изменений.
      Если я наследую не от Tpanel а от Timage то часть кода работает а часть работает очень криво. Очень хочу разобраться почему .
      {Отображается сразу}
      for a:=1 to 1000 do
            begin
              self.Canvas.Fill.Color:=  TAlphaColors.Crimson;
               self.Canvas.FillEllipse(rect(1,1,10,10),self.AbsoluteOpacity);
               self.Canvas.FillEllipse(rect(round(self.Width-9),round(self.Height-9),round(self.Width), round(self.Height)),self.AbsoluteOpacity);
               self.Canvas.FillEllipse(rect(round(self.Width-9),1,round(self.Width), 9),self.AbsoluteOpacity);
               self.Canvas.FillEllipse(rect(1,round(self.Height-9),10, round(self.Height)),self.AbsoluteOpacity);
            end;
       
      {Отображается только после того как я проскролю Scrollbox на котором лежит панель в крайнее нижнее правое положение}
            self.Canvas.Stroke.Color:=  TAlphaColors.Crimson;
            self.Canvas.Stroke.Thickness:=7;
             Canvas.BeginScene;
            self.Canvas.DrawLine(PointF(20, 20), PointF(100, 50), self.AbsoluteOpacity);
             Canvas.EndScene;
      Подскажите пожалуйста, почему не работает такое с панелью?  Как правильно рисовать на панели? 
      Почему в случае с имейджем все работает так некорректно?  Почему работает только после скрола? 
      Каким способом мне лучше сделать координатную сетку? состоящую из точек как в режиме Design?

       


    • От Дмитрий Потапов
      Приветствую. Имеется необходимость получить список всех видимых (GUI) компонентов, установленных в Delphi. Я видел где-то, что можно как-то попробовать через ToolsAPI это сделать, но ничего толкового на эту тему так и не нашел. Может есть у кого мысли по этому поводу?
      Если возникнет вопрос: для чего тебе это?
      Ответ: Для приложения LivePreview, которое идет вместе со студией для того, чтобы видеть то, что размещаю на форме непосредственно на устройстве.

      Спасибо!
    • От Светлана
      Ну всё в принципе как всегда, либо я барашка, либо лыжи не едут)
      А всё просто - я хочу, чтобы пока данные с сервера загружались по клику кнопки, пользователю элементарно был отклик в виде крутящейся какой нибудь фигни и он видел, что процесс идёт и что прога не зависла и никуда лишний раз не тыкал.
      Пока что для тестов сделала элементарно кнопку Update (speedbutton с image), данные элементарно грузятся и отображаются в GridPanel, а поверх него, чтоб пользователь и не смог куда либо тыкнуть, замостила панелькой с Image, вращаемой по таймеру (всё это дело наверху Visible:=false). И когда клацаем по кнопке Update, то панельку сверху грида делаю отображаемой и запускаю таймер, потом этот же обработчик/процедура грузит данные, а по окончанию останавливаем таймер и скрываем полупрозрачну, еще кстати, панельку. Аля вот так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin //отображаем лого загрузки P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; //с запуском таймера GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется //и скрывае лого загрузки Timer_load_rotate.Enabled := false; //уже в обратном порядке P_showLoad.Visible := false; end; иии... ни черта не происходит как я хочу(
      Это лого вообще в итоге не отображается, а если убрать его скрытие, то оно у нас отобразится уже только тогда, когда всё загрузится. Логика мне стала подсказывать, что следовало его как то отобразить выполнив в параллельном асинхронном потоке аля так:
      procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin TThread.Queue(TThread.Current, //TThread.Queue TThread.Synchronize ForceQueue procedure() begin P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; end); GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется end; И опять оно отображается только после того, как всё загрузится и проработает вся процедура. И уже чего только не пробовала и Synchronize и ForceQueue; и через TTask.Run и |task := TTask.Create(procedure () ... и т.д.| ничего не подходит, вот хоть убейся это всё дело будет отображаться только после полной отработки процедуры клика. Может я не в том направлении вообще рою и это как то по другому делается? Может я еще пока отлаживаю на Win32, а не всё на android, а там вот пара вариантов и норм на нём работают? Но чтот я никак не могу понять, что к чему... должно же быть как то просто, а я чтот никак не могу понять как(
    • От ComAlex
      Goоgle Play перестает поддерживать 32-bit Android-приложения c 01.08.2019.
      А выкладывать в Goоgle Play новые УЖЕ нельзя.
      Последние же Delphi XE не позволяют создать 64-bit Android-приложения.
      Кто знает, когда появится новая версия с поддержкой 64 - bit? Говорили, что в конце лета, но лето кончилось
    • От ComAlex
      Здравствуйте, господа программисты!
      Пытаюсь протестировать Android приложение на любом эмуляторе.
      Всегда одна ошибка "Unable to create process: Performing Streamed Install"
      Понимаю, что ссылок много по данной теме в интернете, но ни одна не помогла.
      Использую Embarsadero Delphi 10.3
      При компиляции на реальный телефон всё работает
      При компиляции на эмулятор даже пустого приложения выдается та же ошибка
      "Unable to create process: Performing Streamed Install"
      В чем проблема? Хотя бы в какую сторону копать?
    • От Дмитрий Потапов
      Задался идеей написания IPTV приложения "для себя", в котором при желании смог бы реализовать что-то необходимое и удалить то, что не нужно.
      Собственно вопрос в другом: Я написал простое приложение, которое отлавливает коды кнопок с пульта, приложение по сути самое банальное, использует OnKeyDown и OnKeyUp (чисто для теста). И по нажатию на кнопку на пульте высылает например в Memo или ListBox Информацию о нажатой кнопке (включая ее код).
      Но суть в том, что далеко не все кнопки таким образом распознаются. Для примера:
      Кнопки громкости, назад, домой, увеличение\уменьшение громкости, стрелки(влево, вправо, вверх, вниз) и центральная кнопка (по совместительству OK).
      Цифры все определяются, как одна - 0
      Кнопки, которые не определяются (не срабатывает событие, ибо если был бы неизвестен код, то думаю, в таком случае получил бы все, кроме кода кнопки), но по нажатию кнопки, которая не определяется приложением - ничего не происходит вообще.
       
      Вопрос: Есть ли возможность как-то "научить" приложение распознавать эти кнопки? (Я где-то читал, может даже и здесь, что это все так реализовано именно на уровне самого FireMonkey, будто этих кнопок вообще не существует).
      Если эта тема уже поднималась на форуме или вопрос очень просто решается - извиняюсь)
      Решение: http://fire-monkey.ru/topic/5624-как-отловить-кнопки-пульта-ду/?do=findComment&comment=36399
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...