我正在使用基于xamarin的移动应用程序。我需要从服务器检索有关用户位置的数据,并每隔x秒更新地图上的用户位置。我将用户lat和lon存储在服务器上,但是当我从中获取坐标时服务器最新的图钉未在地图上呈现。仅在第一次绘制图钉之后,即使lat和lon的位置发生变化,图钉仍保持不变且不呈现在新位置上。有人可以提供解决方案。 / p>
请在下面找到代码 这段代码用于每10秒获取位置
Device.StartTimer(TimeSpan.FromSeconds(10), () =>
{
bool CallAgain = true;
lblStatus.IsVisible = false;
mapVM.getGpsPosition().ContinueWith((Task<ApiResponseModel.DriverLocationDetailsResponseModel> t) =>
{
if (t.Result.status == DriverStatus.Running.ToString() || t.Result.status == DriverStatus.Started.ToString())
{
RedrawMap(t.Result.lat, t.Result.lon);
}
else
{
ParentMaps.IsVisible = false;
lblStatus.IsVisible = true;
lblStatus.Text = "Driver has stopped the journey";
CallAgain = false;
}
});
return CallAgain;
});
这段代码用于在地图上绘制图钉
private void RedrawMap(double lat, double lon)
{
var pin = new CustomPin
{
Type = PinType.Place,
Position = new Xamarin.Forms.Maps.Position(lat, lon),
Label = "Current Location",
Id = "Xamarin"
};
DriverMap.CustomPins = new List<CustomPin> { pin };
if (DriverMap.Pins.Count > 0)
{
DriverMap.Pins.Clear();
}
DriverMap.Pins.Add(pin);
DriverMap.MoveToRegion(
MapSpan.FromCenterAndRadius(new
Xamarin.Forms.Maps.Position(lat, lon),
Distance.FromMiles(0.1))
);
}
答案 0 :(得分:1)
您可以设置一个计时器,每隔x秒清洁一次针脚并重新装入新针脚
参考:https://forums.xamarin.com/discussion/118999/refresh-pins-positions-in-google-maps