Конечно, самый удобный способ узнать, где торчит пользователь, использовать свойство navigator.geolocation. Правда, при этом браузер обязательно спросит его разрешения. Лично я почти всегда отказываюсь, только если зашел на проверенные сайты строительных супермаркетов или дискаунтеров типа Ситилинк. Значит, этот способ будет работать с малой эффективностью - данное окошко вызывает подозрение, и, впрочем, оно подозрительное и есть. Как избавиться?
3. В вышеупомянутые методы вы передаете два коллбека, на успех и на ошибку. Определить, какую кнопку юзер нажал можно только косвенно исходя из результата.
Дело в том, что спецификация определяет только API, доступное программисту из JS, а как это выглядит со стороны пользователя - личные фантазии браузерописателей. Где-то попап, где-то галочки в настройках, где-то надо с бубном сплясать. Поэтому никаких гарантий про кнопки дать нельзя.
Если navigator.geolocation является false, значит у пользователя не поддерживается геолокация (например, старый браузер или еще что-то).
Так что делать?? Неужели все-таки придется напрягать пользователя окошком подтверждения? Есть еще один вариант.
API Yandex Maps позволяет определять координаты пользователя, используя свои сервисы. Код довольно простой. Подключаем Yandex Api со своим ключом, и пишем в коде:
В свойстве result.geoObjects.position - координаты местонахождения пользователя.
Конечно, инициализация библиотек Яндекса занимает время, и синхронного результата мы не получим, но все-таки это единственный, на мой взгляд, вариант. Возможно, похожее есть у гугла или еще у кого, но гуглокарты нынче платные, а с другими сервисами надо еще смотреть.
P.S. Практика показала, что это все полная херня. Точности никакой. А иногда Яндекс может "зашвырнуть" пользователя из Самарской области в Казахстан...
blackrid
27/10/2020
Как определить местоположение пользователя, не спрашивая разрешение на геолокацию?
Конечно, самый удобный способ узнать, где торчит пользователь, использовать свойство navigator.geolocation. Правда, при этом браузер обязательно спросит его разрешения. Лично я почти всегда отказываюсь, только если зашел на проверенные сайты строительных супермаркетов или дискаунтеров типа Ситилинк. Значит, этот способ будет работать с малой эффективностью - данное окошко вызывает подозрение, и, впрочем, оно подозрительное и есть. Как избавиться?
Так что делать?? Неужели все-таки придется напрягать пользователя окошком подтверждения? Есть еще один вариант.
API Yandex Maps позволяет определять координаты пользователя, используя свои сервисы. Код довольно простой. Подключаем Yandex Api со своим ключом, и пишем в коде:
В свойстве result.geoObjects.position - координаты местонахождения пользователя.
Конечно, инициализация библиотек Яндекса занимает время, и синхронного результата мы не получим, но все-таки это единственный, на мой взгляд, вариант. Возможно, похожее есть у гугла или еще у кого, но гуглокарты нынче платные, а с другими сервисами надо еще смотреть.
P.S. Практика показала, что это все полная херня. Точности никакой. А иногда Яндекс может "зашвырнуть" пользователя из Самарской области в Казахстан...