【发布时间】:2021-04-04 01:58:18
【问题描述】:
我的表单上有TMapView。 TMapView 到目前为止工作正常,但我想增加在TMapView 上的两个坐标之间画一条线的可能性。我该怎么做?
我尝试了以下方法,但无论如何都不起作用:
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;
我猜画布的东西不会像我想要的那样工作,因为我认为它只是将 TMapView 上的点连接为位图,而不是地图本身。请建议我如何在地图上的两个坐标之间画一条线(如果可能的话)
我使用的是 Delphi 10.3.3 Community Edition,并尝试在我的 android 10 手机上编译它。
我发现了这个SO Link,其中 Polyline 在 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 的画布,但在绘制“正方形”后它消失了,我猜这些线条也正在消失。我能否以某种方式使这些自绘的画布更改永久化,直到我自己重绘它们?
【问题讨论】:
-
您可能必须将地理坐标(纬度、经度)转换为画布(位图)坐标。尝试从左上角 (0, 0) 到底线角 (with, height) 画一条线,看看这条线是否可见。
-
我尝试画画布,但我使用的代码没有画任何东西:
delphi var A,B: TPoint; begin A.x:=12; A.y:=12; B.x:=strtoint(MapView1.Width.ToString); B.y:=strtoint(MapView1.Height.ToString); MapView1.Canvas.DrawLine(A,B,50); //doesnt work end;所以我什至没有设法画出任何线条 -
delphi with MapView1.Canvas do begin BeginUpdate; Stroke.Color := TAlphaColors.Black; Stroke.Thickness := 2.0; Stroke.Kind := TBrushKind.Solid; DrawLine(PointF(10, 10), PointF(100, 10), 1); EndUpdate; end;这在 TMapView 上也不起作用 -
这似乎与 [google-maps] 无关
-
@geocodezip TMapView 使用谷歌地图,但是是的,我明白了。标签被移除
标签: canvas line firemonkey delphi-10.3-rio