Подскажите, пожалуйста, как отключить
navigator.geolocation.watchPosition()
. У меня есть метод, который по нажатию кнопки включает наблюдение за местоположением. Мне необходимо, чтобы после размонтирования компонента, наблюдение отключалось. Пробовал я через
navigator.geolocation.clearWatch()
. Но так как это метод, то наблюдение не отключается, пробовал также возвращать id. Включать отслеживание необходимо только по нажатию кнопки, поэтому не писал так:
const id = navigator.geolocation.watchPosition((position) => {
const { latitude, longitude } = position.coords;
continousCoordinates.value = [
longitude,
latitude
]
}, error, options);
onUnmounted(() => {
navigator.geolocation.clearWatch(id);
})
Вот как всё выглядит:
// Метод включения наблюдения
const getContinuousPosition = () => {
const id = navigator.geolocation.watchPosition((position) => {
const { latitude, longitude } = position.coords;
continousCoordinates.value = [
longitude,
latitude
]
}, error, options);
return id;
};
// Общий метод с помощью которого всё срабатывает
const postImmediate = () => {
getContinuousPosition();
// Http запрос
store.postImmediateTask(user.value!.phone, user.value!.fullname, currDate, continousCoordinates.value!)
};
// Если изменяются координаты, то отправляет http запрос
watch(continousCoordinates, (newValue) => {
if (newValue) {
store.patchImmediateTask(user.value!.fullname, newValue);
}
})
// Прекращение наблюдения при размонтировании
onUnmounted(() => {
navigator.geolocation.clearWatch(getContinuousPosition());
})