#javascript #html5
Как узнать регион пользователя который зашёл на сайт?
Ответы
Ответ 1
Что-то подобное можно использовать (определение местоположения по координатам): HTMLСтрана:
Край(обл.):
Город:
Адрес:
Широта:
Долгота:
JS function displayError(error) { var errors = { 1: 'Нет прав доступа', 2: 'Местоположение невозможно определить', 3: 'Таймаут соединения' }; alert("Ошибка: " + errors[error.code]); } function displayPosition(position) { var GEOCODING = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + position.coords.latitude + '%2C' + position.coords.longitude + '&language=ru'; $.getJSON(GEOCODING).done(function(location) { $('#address').html(location.results[0].formatted_address); $('#latitude').html(position.coords.latitude); $('#longitude').html(position.coords.longitude); // в location.results[0] содержится больше всего информации об адресе for (var i = 0; i < location.results[0].address_components.length; i++) { switch(location.results[0].address_components[i].types[0]) { case 'locality': $('#city').html(location.results[0].address_components[i].long_name); break; case 'administrative_area_level_1': $('#state').html(location.results[0].address_components[i].long_name); break; case 'country': $('#country').html(location.results[0].address_components[i].long_name); break; } } }) } if (navigator.geolocation) { var timeoutVal = 10 * 1000 * 1000; navigator.geolocation.getCurrentPosition( displayPosition, displayError, { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 } ); } else { alert("Geolocation не поддерживается данным браузером"); } Рабочий пример: https://jsfiddle.net/tty37u7m/6/ (сюда в код не удалось импортировать этот пример, geolocation не реагирует)Ответ 2
Пока существуют NAT и «серые» сети, про геолокацию можно забыть. Дело в том, что из-за недостатка публичных («белых», всюду видимых) IPv4 адресов интернет-провайдер назначает их только некоторому количеству своих устройств, так называемым «NAT-шлюзам». Абонентам же, ровно как и внутренним маршрутизаторам, назначаются локальные («серые») адреса, невидимые за пределами шлюза; эти адреса повторяются от провайдера к провайдеру. База же GeoIP, хранящая в себе географическую привязку подсетей, содержит в себе исключительно публичные подсети. Как результат, geolocation определяет положение не пользователя, а провайдерского шлюза во «внешний» интернет. С учётом того, что шлюзов как правило несколько, то каждое последующее подключение может быть «проброшено» через разные, вероятно географически распределённые, шлюзы. Например: я живу в Тольятти, но geolocation определяет, что я живу то в Самаре, то в Москве.Ответ 3
как вариант можешь использовать готовый сервис https://location.ekolesnyk.com/ делаешь апи запрос получаешь ответ страна город координаты, пример $url = 'https://location.ekolesnyk.com/api/v1/country/?apiKey={apiKey}&ip=www.google.com'; $response = file_get_contents($url); $json = json_decode($response, true); if((isset($json['error']))){ return $json['error']; //message error } return $json;
Комментариев нет:
Отправить комментарий