Я мог бы действительно использовать некоторую помощь для улучшения точности функции геозон.Если вы посмотрите на следующие снимки экрана, вы увидите мое местоположение и местоположение круга и маркера, которые имеют те же координаты широты и радиуса, что и моя геозона.
Ссылка на изображение
Если я запускаю следующие строки в файле app.js
:
const taskName = "front_door";
const latLng = { latitude: -37.820711, longitude: 144.994264 };
const radius = 5;
Permissions.askAsync(Permissions.LOCATION);
Location.startGeofencingAsync(taskName, [
{
...latLng,
radius
}
]);
TaskManager.defineTask(taskName, task => {
if (task.data.eventType === Location.GeofencingEventType.Enter) {
console.log("entered");
}
console.log(task.data.region.state);
return;
});
, который возвращает entered
и 1
( объяснение ).Учитывая, что мое текущее местоположение находится за пределами геозоны, я ожидаю, что entered
будет стрелять только тогда, когда у меня внутри геозоны и task.data.region.state
будет равно 2
( объяснение ).
Если я изменю:
const latLng = { latitude: -37.820711, longitude: 144.994264 };
На:
const latLng = { latitude: -37, longitude: 144 };
Геозона находится достаточно далеко, чтобы entered
никогда не выводился, а task.data.region.state
равняется 2.
Это наводит меня на мысль, что проблема связана с набором точности Location
, однако я не могу найти способ повысить точность при использовании метода startGeofencingAsync
.
Если я не использовал геозонуЯ хотел бы сделать что-то вроде этого:
Location.startLocationUpdatesAsync(taskName, {
accuracy: Location.Accuracy.Highest
});
Но я не вижу, как получить доступ к объекту параметров при использовании Location.startGeofencingAsync(taskName, regions)
Если вы знаете, как этого добиться, пожалуйста, дайте мнезнаю, как я выдергиваю волосы!Заранее спасибо:)