Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Как определить текущее местоположение пользователя и что лучше использовать?

#javascript #google_maps_api #yandex_maps_api #геолокация


Есть интернациональный проект. При совершении пользователем определенных действий,
необходимо получать данные о его местоположении (страна, город, улица(если возможно)),
и после уже отсылаем эти данные на наш сервер. Я видел примеры от гугл и яндекс карт,
там можно получить координаты. Я все же более склонен к использованию гугла. 

Есть ли пример получения этих данных при этом сделав как можно меньше запросов?

P.S. При этом мне не нужно что-либо отрисовывать на карте и рисовать саму карту
    


Ответы

Ответ 1



Силами HTML5 — navigator.geolocation.getCurrentPosition(). Браузер спрашивает у пользователя разрешение и в случае согласия отдает ОЧЕНЬ (в большинстве случаев) точные данные в виде широты и долготы. Потом это можно скормить https://developers.google.com/maps/documentation/geocoding/intro без карты. upd 2018: данный способ работает для https-сайтов Определять по IP. Есть бесплатная (но не самая полная) база — https://dev.maxmind.com/ru/geolite2/ Вот есть библиотека под нее — https://github.com/maxmind/GeoIP2-php В этом случае данные доступны сразу, но они не точные (Страна, город).

Ответ 2



Если на js, могу дать совет воспользоваться запросом, на сторонний сервис, после чего получить json данные с него, через jsonp.
На codepen: https://codepen.io/AndreyMyP/pen/gzXVXV

Ответ 3



Яндекс, кстати, предоставляет "API Geocoder" для HTTP запросов: https://tech.yandex.ru/maps/doc/geocoder/desc/concepts/input_params-docpage/ Ответ геокодера может быть сформирован в следующих форматах: XML, согласно спецификации YMapsML; JSON или JSONP. Чтобы начать работать с HTTP API Геокодера, нужно получить ключ для пакета «JavaScript API и HTTP Геокодер». Но есть ограничение на кол-во бесплатных запросов 25тыс в сутки. И определенные условия, например проект должен находиться в открытом доступе, т.е. если есть регистрация, то она должна быть открыта для всех.

Комментариев нет:

Отправить комментарий