如何使用xamarin每隔x秒刷新/更新大头针位置

时间:2019-01-14 18:46:35

标签: xamarin

我正在使用基于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))
            );
  }

1 个答案:

答案 0 :(得分:1)

您可以设置一个计时器,每隔x秒清洁一次针脚并重新装入新针脚

参考:https://forums.xamarin.com/discussion/118999/refresh-pins-positions-in-google-maps