Не удается найти текущее местоположение в приложении Tizen .Net
Я пытаюсь получить местоположение от Tizen.Location.Locator
с помощью GetLocation
метод, но я получаю значения широты и долготы, установленные на 0
,
Я использую:
- Visual Studio 2017
- Эмулятор Носимых 4.0
- Уже предоставлены привилегии для использования местоположения, также добавлена функция местоположения в файле манифеста.
Вот мой код:
private static Locator locator = new Locator(LocationType.Gps);
try
{
if (locator != null)
{
// Starts the Locator
locator.Start();
//Get Location
Tizen.Location.Location currentLocation = locator.GetLocation();
//Update xaml view
latitudeValue.Text = currentLocation.Latitude.ToString();
longitudeValue.Text = currentLocation.Longitude.ToString();
}
}
catch (InvalidOperationException exception)
{
// Exception handling here
}
нет описания о переменной currentLocation
так как это рассматривается как bool
там. Когда я пытаюсь получить описание с помощью функции быстрого просмотра Visual Studio (нажав Shift + F9
), Я получаю еще одну ошибку, связанную с преобразованием этой переменной bool
базовый тип ссылки на член 'bool' не является структурой или объединением
Приведенный выше код не показывает какой-либо ServiceStateChanged
событие зарегистрировано, но я также включил это, используя способ, показанный в примере кода, но у меня это не сработало.
Теперь интересно, что я здесь делаю не так.
1 ответ
Ваш GPS большую часть времени неактивен из-за расхода заряда аккумулятора или определения местоположения через поставщика услуг
или же
Используйте этот плагин для получения текущего местоположения - https://github.com/jamesmontemagno/GeolocatorPlugin
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;
}
}