Я бы настоятельно рекомендовал просмотреть документацию для этого конкретного плагина. Джеймс Монтемагно - известный и уважаемый разработчик, который использовал мою Microsoft для работы над платформой Xamarin, поэтому его плагины, расширения и инструментарий, как правило, довольно оптимизирован для использования в кроссплатформенных приложениях.
Глядя на документацию, становится ясно, что при попытке получить последнее «известное» местоположение обращается к внутреннему кешированному набору данных о местоположении и не обязательно оптимизируется для запросов почти в реальном времени. Однако его можно использовать для уменьшения количества фактических запросов местоположения, которые вы должны выполнять в приложении.
Полный фрагмент из связанной документации выглядит следующим образом:
public async Task<Position> GetCurrentLocation()
{
public static async Task<Position> GetCurrentPosition()
{
Position position = null;
try
{
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 100;
position = await locator.GetLastKnownLocationAsync();
if (position != null)
{
//got a cahched position, so let's use it.
return position;
}
if (!locator.IsGeolocationAvailable || !locator.IsGeolocationEnabled)
{
//not available or enabled
return null;
}
position = await locator.GetPositionAsync(TimeSpan.FromSeconds(20), null, true);
}
catch (Exception ex)
{
Debug.WriteLine("Unable to get location: " + ex);
}
if (position == null)
return null;
var output = string.Format("Time: {0} \nLat: {1} \nLong: {2} \nAltitude: {3} \nAltitude Accuracy: {4} \nAccuracy: {5} \nHeading: {6} \nSpeed: {7}",
position.Timestamp, position.Latitude, position.Longitude,
position.Altitude, position.AltitudeAccuracy, position.Accuracy, position.Heading, position.Speed);
Debug.WriteLine(output);
return position;
}
}
Этот метод разработан в соответствии с иерархическим шаблоном поиска местоположения, он начинается с последней «известной» позиции и запрашивает, если необходимо, вы можете сделать это еще дальше и добавить тайм-аут для проверки кэшированного местоположения, если ты хотел.
Что касается того, как часто обновляются эти данные, я бы отсылал вас к разделу документации , озаглавленному «Фоновые обновления»
Джеймс говорит о приложении для вождения, как пример того, как это работает. Обновление выполняется по-разному для Android и iOS, но вот фрагмент, касающийся Android:
Для этого вы захотите интегрировать службу переднего плана, которая
подписывается на изменения местоположения, и пользовательский интерфейс связывается с. пожалуйста
Прочитайте документацию Xamarin.Android Services
В примере кода, который он использует, он показывает вам, как создать «слушателя», который будет периодически проверять изменения местоположения. Это может лучше соответствовать тому, что вы пытаетесь сделать, в зависимости от цели вашего приложения.