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
都会触发,因此您可能需要为自己添加一些控制变量,以控制是只更新一次位置还是不断跟踪设备移动。
我正在尝试创建一个应用程序,用户点击一个按钮就会出现一个 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
都会触发,因此您可能需要为自己添加一些控制变量,以控制是只更新一次位置还是不断跟踪设备移动。