我真的可以使用一些帮助来提高地理围栏功能的准确性。如果查看以下屏幕截图,您会看到我的位置以及与我的地理围栏共享相同的latLng坐标和半径的圆和标记的位置。
如果我在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
(explanation)。
鉴于我当前的位置不在地理围栏之外,我希望entered
仅在我进入地理围栏并且task.data.region.state
等于2
(explanation)时触发。 >
如果我更改:
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)
如果您知道该如何实现,请在我将头发拔掉时告诉我!在此先感谢:)