Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

Геолокация HTML

Геолокация  HTML

Всем доброго времени суток дорогие друзья. Тема сегодня довольно интересная и поэтому давайте не будет терять нашего времени и сразу приступим к делу.

Прежде всего хочу вам сообщить что для того чтобы определить местоположение пользователя, во первых сам пользователь должен дать разрешение на данное действие, а во вторых протокол должен быть https c http такое не прокатит, это реализовано прежде всего для безопасности и конфиденциальности данных.

За работу с геолокацией отвечает объект navigator, кто работает с javaScript уже знакомы с этим объектом к примеру:

alert(navigator.userAgent);

выведет в модальном окне браузер его версию и операционную систему с которой сидит пользователь.

Следовательно за работу с геолокацией отвечает свойство geolocation и записывается так:

console.log(navigator.geolocation);

здесь нам в консоль вернется объект геолокации, развернув который вы увидите следующее:

Geolocation {}

__proto__:Geolocation

clearWatch:ƒ clearWatch()

getCurrentPosition:ƒ getCurrentPosition()

watchPosition:ƒ watchPosition()

constructor:ƒ Geolocation()

Symbol(Symbol.toStringTag):"Geolocation"

__proto__:Object

Здесь нас интересуют только getCurrentPosition, watchPosition и clearWatch ,а именно методы для работы с геолокацией.

Метод getCurrentPosition позволяет определить позицию пользователя по координатам широты и долготы, выглядит все это примерно так:

navigator.geolocation.getCurrentPosition(
            function(position) {
                console.log('Широта: ' +
                    position.coords.latitude , "Долгота: " + position.coords.longitude);
            }
        );

position.coords.latitude - координата широты(в градусах)

position.coords.longitude - координата долготы(в градусах)

как мы видим внутри метода getCurrentPosition вызывается анонимная функция которая в качестве аргумента возвращает текущую позицию пользователя, отмечу что данный метод можем принимать две функции. Первая вызывается при удачном исходе, вторая в случае возникновения ошибки. Ошибка можем возникать в случае если пользователь отказал нам в предоставлении своего местоположения. Пример:

navigator.geolocation.getCurrentPosition(success, error);

function success(position) {
    console.log('Широта: ' +
        position.coords.latitude , "Долгота: " + position.coords.longitude);
}
function error(err){
    if (err.code == 1) {
        console.log('Вы запретили определять свое местоположение');
    }
}

Что касается точности определения координат по широте и долготе ,я проверял , погрешность составила примерно 100 - 150 метров. Но я думаю это зависит прежде от устройства которое вы используете. Отмечу что данным методом вы можете определять местоположение пользователя через все современные устройства телефоны, iphone, ноутбуки и т. д.

Метод watchPosition действует по такому же принципу как и getCurrentPosition но только с одним значительным исключением он активируется как только пользователь меняет свое местоположение. То есть данные метод динамичен и мы с помощью него можем отслеживать перемещение пользователя.

navigator.geolocation.watchPosition(success, error);

function success(position) {
    console.log('Текущие координаты широты: ' +
        position.coords.latitude , "Текущие координаты долготы: " + position.coords.longitude);
}
function error(err){
    if (err.code == 1) {
        console.log('Вы запретили определять свое местоположение');
    }
}

мы можем прикрепить к данному методу дескриптор или идентификатор используя который с помощью метода clearWatch сможем прервать процесс отслеживания.

var id =  navigator.geolocation.getCurrentPosition(success, error);

 function success(position) {
     console.log('Широта: ' +
         position.coords.latitude , "Долгота: " + position.coords.longitude);
 }
 function error(err){
     if (err.code == 1) {
         console.log('Вы запретили определять свое местоположение');
     }
 }
navigator.geolocation.clearWatch(id);

Вот и все дорогие друзья что я вам хотел рассказать по данной теме. Дальше дело за вами.

Я желаю вам удачи и успехов.Пока!

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm