在 TMapView 中的两个坐标之间画一条线 (Delphi FMX)
Draw a Line between two coordinates in a TMapView (Delphi FMX)
我的表格上有一个 TMapView
。 TMapView
到目前为止工作正常,但我想增加 在 [=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;
我的表格上有一个 TMapView
。 TMapView
到目前为止工作正常,但我想增加 在 [=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;