Я использую пакет местоположения Flutter , чтобы получить координаты положения пользователей в моем приложении. Во время тестирования iPad 4-го поколения (Wi-Fi и сотовая связь), если нет сигнала телефона, записанное местоположение очень неточно. Он сообщит либо о том месте, где я был ранее, либо о месте где-то посередине поля, в любом случае это место обычно отстает примерно на милю. Я тестировал в основном iPad, но у меня был пользователь iPhone 6 с той же проблемой. Я читал, что у iPad должен быть правильный спутниковый GPS, который используется при отсутствии сигнала телефона.
Вот функция, которую я использую для получения текущего местоположения.
Future<LocationData> _getCurrentLocation() async {
Location location = new Location();
bool _serviceEnabled;
PermissionStatus _permissionGranted;
LocationData _locationData;
await location.changeSettings(accuracy: LocationAccuracy.high, interval: 1000);
// Platform messages may fail, so we use a try/catch PlatformException.
try {
_serviceEnabled = await location.serviceEnabled();
if (!_serviceEnabled) {
_serviceEnabled = await location.requestService();
if (!_serviceEnabled) {
return null;
}
}
_permissionGranted = await location.hasPermission();
if (_permissionGranted == PermissionStatus.denied) {
_permissionGranted = await location.requestPermission();
if (_permissionGranted != PermissionStatus.granted) {
return null;
}
}
_locationData = await location.getLocation();
} on PlatformException catch (e) {
print(e.message);
return null;
}
return _locationData;
}
await location.getLocation () кажется, совсем не занимает времени, чтобы получить местоположение, когда нет сигнала телефона, и я ожидал бы, что потребуется мгновение или два, чтобы получить координаты GPS. На устройстве Android (Moto G8) местоположение записывается правильно с телефонным сигналом или без него, но для его определения требуется несколько секунд.
Я бы хотел получить более точное местоположение записывается (в пределах 50 метров или около того), или если он не может получить точное местоположение, просто вернуть null. Есть идеи?
Изменить: Я вынул сим-карту из iPad и прогулялся с ней по окрестностям, используя приложение, чтобы определить свое местоположение в нескольких местах. У iPad в это время не было доступа к Wi-Fi. Места, записанные во время этой прогулки, были намного более точными, в пределах 10-20 метров.
Во время этой прогулки с хорошими результатами определения местоположения я находился в области, которая имела бы хороший сигнал, если бы в ней находился сим . Мое предыдущее тестирование, когда местоположение было неточным, проводилось в районе, где не было телефонного сигнала. Здесь я ожидал, что вместо этого iPad будет использовать спутниковый GPS.