【问题标题】:C# Xamarin Geolocator Plugin not updating locationC# Xamarin Geolocator 插件不更新位置
【发布时间】:2017-07-10 04:35:04
【问题描述】:

我正在使用 Xamarin Forms 创建一个应用程序来跟踪用户的位置。我目前正在尝试使用 this Geolocator 插件来跟踪用户的位置。我已经按照插件教程中的步骤进行操作,但是我的位置目前没有刷新。

这是我的代码:

public WhosOnFarm ()
{
    InitializeComponent ();
    locator = CrossGeolocator.Current;

    locator.PositionChanged += (sender, e) => {
        DisplayAlert("Success", "Your position has changed!", "OK");
        var position = e.Position;
        longitudeLabel.Text = "Longitude: "+position.Longitude.ToString() + " Latitude: " + position.Latitude.ToString();
    };
}

在教程中它没有指定locator 的类型,所以我假设它需要它的数据CrossGeolocator.Current;

我错过了什么?

【问题讨论】:

    标签: c# xamarin geolocation xamarin.forms


    【解决方案1】:

    如果没有项目设置,回答您的问题有点困难。位置插件,例如 GeoLocation,需要在项目中设置一些属性(权限)。你加了那些?你在哪个平台上使用它?你在什么设备或模拟器上测试过?

    【讨论】:

    • 对不起,如果我的问题含糊不清。我已经添加了适当的权限,例如“ACCESS_COURSE_LOCATION”和“ACCESS_FINE_LOCATION”我正在 Galaxy S7 Edge 以及 android_23_x86 模拟器上测试它
    【解决方案2】:

    我已经实现了相同的库,下面是我的代码 在安卓和iOS上完美运行

         public partial class MainPage : ContentPage
        {
            public MainPage()
            {
                InitializeComponent();
                CrossGeolocator.Current.AllowsBackgroundUpdates = true;
                CrossGeolocator.Current.DesiredAccuracy = 50;
                CrossGeolocator.Current.PositionChanged += Current_PositionChanged;
            }
    
            protected override void OnAppearing()
            {
                base.OnAppearing();
                updateLocation();
            }
    
            private async void updateLocation()
            {
                try
                {
                    var locator = CrossGeolocator.Current;
                    locator.DesiredAccuracy = 50;
                    locator.AllowsBackgroundUpdates = true;
                    var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000);
    
                    if (position == null)
                    {
                        lblData.Text = "null gps :(";
                        return;
                    }
                    lblData.Text = string.Format("\nTime: {0} \nLat: {1} \nLong: {2} \n Altitude: {3} \nAltitude Accuracy: {4} \nAccuracy: {5} \n Heading: {6} \n Speed: {7}",
                position.Timestamp, position.Latitude, position.Longitude,
                position.Altitude, position.AltitudeAccuracy, position.Accuracy, position.Heading, position.Speed);
    
                    mapVar.MoveToRegion(
       MapSpan.FromCenterAndRadius(
           new Position(position.Latitude,position.Longitude), Distance.FromKilometers(1)));
                    await CrossGeolocator.Current.StartListeningAsync(1, 2, true);
                }
                catch (Exception)
                {
                }
            }
    
    
            private void Current_PositionChanged(object sender, Plugin.Geolocator.Abstractions.PositionEventArgs e)
            {
                if (e.Position != null)
                {
                    Device.BeginInvokeOnMainThread(() => {
                        var position = e.Position;
                        lblData.Text = string.Format("\n\nTime: {0} \nLat: {1} \nLong: {2} \n Altitude: {3} \nAltitude Accuracy: {4} \nAccuracy: {5} \n Heading: {6} \n Speed: {7}",
                position.Timestamp, position.Latitude, position.Longitude,
                position.Altitude, position.AltitudeAccuracy, position.Accuracy, position.Heading, position.Speed);
                        mapVar.Pins.Clear();
                        mapVar.Pins.Add(new Xamarin.Forms.Maps.Pin
                        {
                            Position = new Xamarin.Forms.Maps.Position(position.Latitude, position.Longitude),
                            Type = Xamarin.Forms.Maps.PinType.Place,
                            Label = "My Location"
                        });
    
                        mapVar.MoveToRegion(
       MapSpan.FromCenterAndRadius(
           new Position(position.Latitude, position.Longitude), Distance.FromKilometers(1)));
    
                    });
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多