Перейти к содержанию
Fire Monkey от А до Я
  • 0

Рисование маршрута на MapView, Delphi, Android


Pepko006

Вопрос

Всем доброго времени суток, подскажите можно ли как то на этом компоненте нарисовать свой маршрут что бы получилось как на картинке ? 
И ещё один вопрос, как сделать что бы кнопка оставалась нажатой ?  Нажал выполняет действие, отжал её и не выполняет =D

mCWyFStQhHk.jpg

Ссылка на комментарий

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

  • 0
21 час назад, Равиль Зарипов (ZuBy) сказал:

Посмотрите эту тему

Последний вариант по ссылке

А подскажите ответ на второй вопрос про кнопку ? 
И ещё вопрос про то как правильно пользоватся функцией MapView.AddPolyline(); , а именно как обьявить масив типа координат карты,  как на примере не работает, ругается на первую строку. 

  1. TArray__1<TMapCoordinate> mapCoords;
  2. mapCoords.Length = 2;
  3. mapCoords[0].Latitude = 0.1;
  4. mapCoords[0].Longitude = 0.1;
  5. mapCoords[1].Latitude = 0.5;
  6. mapCoords[1].Longitude = 0.5;
  7. TMapPolylineDescriptor mapDesc = TMapPolylineDescriptor::Create(mapCoords);
  8. MapView1->AddPolyline(mapDesc);
  9. MapView1->Location = mapCoords[0];
Ссылка на комментарий
  • 0
В 25.02.2017 в 22:59, Pepko006 сказал:

как сделать что бы кнопка оставалась нажатой ?  Нажал выполняет действие, отжал её и не выполняет

  Button1.StaysPressed := true;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.IsPressed then
    ShowMessage('нажата')
  else ShowMessage('отжата');
end; 

 

Ссылка на комментарий
  • 0
2 часа назад, enatechno сказал:

  Button1.StaysPressed := true;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.IsPressed then
    ShowMessage('нажата')
  else ShowMessage('отжата');
end; 

 

Спасибо, как это я так пропустил этот параметр =)

Ссылка на комментарий
  • 0

Подскажите, почему не работает рисование линии, ошибок нет но линия так и не появилась. 

procedure TTabbedForm.BTramClick(Sender: TObject);
var
  Line:TmapPolylineDescriptor;
  Points: TArray<TMapCoordinate>;
begin
  Points[0].Create(49.901493, 28.587838);
  Points[1].Create(49.897793, 28.585026);
  Line := TMapPolylineDescriptor.Create(Points);
  Line.StrokeColor := TAlphaColorRec.Darkgrey;
  MapView.AddPolyline(Line);
end;

 

Ссылка на комментарий
  • 0
  • Модераторы
var
  Line: TmapPolylineDescriptor;
  Points: TArray<TMapCoordinate>;
begin
  SetLength(Points, 2);
  Points[0] := TMapCoordinate.Create(49.901493, 28.587838);
  Points[1] := TMapCoordinate.Create(49.897793, 28.585026);
  Line := TmapPolylineDescriptor.Create(Points);
  Line.StrokeColor := TAlphaColorRec.Darkgrey;
  MapView.AddPolyline(Line);
end;

прочитайте как работать с массивами

Ссылка на комментарий
  • 0
3 часа назад, Равиль Зарипов (ZuBy) сказал:

var
  Line: TmapPolylineDescriptor;
  Points: TArray<TMapCoordinate>;
begin
  SetLength(Points, 2);
  Points[0] := TMapCoordinate.Create(49.901493, 28.587838);
  Points[1] := TMapCoordinate.Create(49.897793, 28.585026);
  Line := TmapPolylineDescriptor.Create(Points);
  Line.StrokeColor := TAlphaColorRec.Darkgrey;
  MapView.AddPolyline(Line);
end;

прочитайте как работать с массивами

А как её удалить в случаи необходимости ?

Ссылка на комментарий
  • 0
7 минут назад, krapotkin сказал:

  a:=MapView1.AddPolyline(d);
  a.Remove;

Получается ошибка Access violation at address DF27FD26, acessing adress 00000000.
Что я делаю не так ? 
procedure TTabbedForm.BTramClick(Sender: TObject);
var
  Line:TmapPolylineDescriptor;
  LineDestroy:TmapPolyline;
  Points:TArray<TMapCoordinate>;
begin
  if BTram.IsPressed
    then
      Begin
        // Створюємо та малюємо лінію
        SetLength(Points, 2);
        Points[0]:=TmapCoordinate.Create(49.901493, 28.587838);
        Points[1]:=TmapCoordinate.Create(49.897793, 28.585026);
        Line:=TmapPolylineDescriptor.Create(Points);
        Line.Geodesic:=True;
        Line.StrokeColor:=TAlphaColorRec.Red;
        LineDestroy:=MapView.AddPolyline(Line);
      End
    else
      Begin
        LineDestroy.Remove;
      End;
end;

Ссылка на комментарий
  • 0

мне лень лезть по полной процедуре для получения сертификата на maps

разделите процедуру на две кнопки

по одной - AddPolyLine, по другой - Remove

логично предположить, что при первом же попадании в этот метод вы идете по ветке else и LineDestroy == NIL

ну и да, это должно быть полем формы

Изменено пользователем krapotkin
Ссылка на комментарий
  • 0
1 минуту назад, Равиль Зарипов (ZuBy) сказал:

Вас не смущает что это локальная переменная?

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

Ссылка на комментарий
  • 0
  TForm1 = class(TForm)
    b1: TButton;
    b2: TButton;
    MapView1: TMapView;
    procedure b1Click(Sender: TObject);
    procedure b2Click(Sender: TObject);
  public
    LineDestroy:TmapPolyline;
  end;


procedure TForm1.b1Click(Sender: TObject);
var
  Line:TmapPolylineDescriptor;
  Points:TArray<TMapCoordinate>;
begin
  SetLength(Points, 2);
  MapView1.Location :=TmapCoordinate.Create(49.901493, 28.587838);
  Points[0]:=TmapCoordinate.Create(49.901493, 28.587838);
  Points[1]:=TmapCoordinate.Create(49.897793, 28.585026);
  Line:=TmapPolylineDescriptor.Create(Points);
  Line.Geodesic:=True;
  Line.StrokeColor:=TAlphaColorRec.Red;
  LineDestroy:=MapView1.AddPolyline(Line);
end;

procedure TForm1.b2Click(Sender: TObject);
begin
  LineDestroy.Remove;
end;

 

Ссылка на комментарий

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

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