在 TMapView 中的两个坐标之间画一条线 (Delphi FMX)

Draw a Line between two coordinates in a TMapView (Delphi FMX)

我的表格上有一个 TMapViewTMapView 到目前为止工作正常,但我想增加 在 [=13= 上的两个 坐标 之间画一条线 的可能性].我该怎么做?

我尝试了以下方法,但无论如何都不起作用:

var
A,B: TMapCoordinate;
AB: TMapPolylineDescriptor;
begin
A.Latitude:=51.88;
A.Longitude:=10.56;
B.Latitude:=51.9;
B.Longitude:=10.7;
//MapView1.Canvas.DrawLine(A,B,50); //doesnt work
// AB.Points:=[A,B]; //doesnt work too
AB.StrokeWidth:=50;
//MapView1.AddPolyline(AB); //doesnt work too
end;

我想 canvas 不会像我想要的那样工作,因为我认为它只是将 TMapView 上的点连接为位图,而不是地图本身。请建议我如何在地图上的两个坐标之间画一条线(如果可能的话)

我使用 Delphi 10.3.3 Community Edition 并尝试在我的 android 10 phone.

上编译它

我发现这个 SO Link 在 iPhone 上的 MapKit 中 Objective-C 使用了多段线。我想我必须在 delphi 中做同样的事情,但我不知道该怎么做。但我看到 Polyline 在两点之间绘制了一条地图路线。这也很高兴知道,但我只想画出我的线,没有来自 Google.

的地图路线建议

如果我使用此代码:

  if MapView1.Canvas.BeginScene then
  begin
    Canvas.Fill.Color := $FF111111 + random($FFFFFF);
    Canvas.Fill.Kind := TBrushKind.Solid;
    Canvas.FillRect(RectF(random(300), random(300), random(300), random(300)),
    0,
    0, [], 1);
    Canvas.EndScene;
  end;

它可以工作并在某处以某种颜色绘制一个彩色矩形,但在出现后立即消失。也许这就是为什么我的线条也看不到的原因。也许他们被涂上了油漆,但马上就被涂上了。我不太了解我的 TMapView 的 canvas 或一般的 Canvas,但是在绘制“正方形”之后它消失了,我猜那些线也正在消失。我能否以某种方式使那些自我绘制的 canvas 更改永久化,直到我自己重新绘制它们?

尝试这样使用

var
A,B: TMapCoordinate;
AB: TMapPolylineDescriptor;
begin
  A := TMapCoordinate.Create(51.88,10.56);
  B := TMapCoordinate.Create(51.9,10.7);

  AB := TMapPolylineDescriptor.Create([A,B]);
  AB.StrokeWidth:=5;
  MapView1.AddPolyline(AB);
end;