TMapView 一开始不显示当前位置

TMapView not showing the current location at the beginning

我正在尝试创建一个应用程序,用户点击一个按钮就会出现一个 TMapView。我只想让用户的当前位置一开始就出现在地图上,而不是零位置。这只会在他按下设备的后退按钮然后第二次转到当前位置时发生。我不太明白为什么会这样。 这是代码:

procedure TForm2.SetLocation();
var
  LManager : TSensorManager;
  LSensors : TSensorArray;
  LSensor  : TCustomSensor;
  LLocationSensor: TCustomLocationSensor;
begin

  LManager := TSensorManager.Current;
  LManager.Activate;

  LSensors  := LManager.GetSensorsByCategory(TSensorCategory.Location);
  for LSensor in LSensors do
    begin
      LLocationSensor:=LSensor as TCustomLocationSensor;
      LLocationSensor.Start;
      MapView1.Location := TMapCoordinate.Create(LLocationSensor.Latitude,LLocationSensor.Longitude);
    end;
end;

假设第一次渲染地图时调用此函数。

您应该使用 OnLocationChanged 事件来检索您的设备位置,因为它会在检索到位置后立即触发。

当然,成功检索初始位置的时间受信号强度的影响很大。

当您仍在检索当前位置时通知用户是一种很好的做法。

注意:由于每次设备位置更改时 OnLocationChanged 都会触发,因此您可能需要为自己添加一些控制变量,以控制是只更新一次位置还是不断跟踪设备移动。