Как получить местоположение посетителя (т.е. страну) с помощью геолокации?

Я пытаюсь расширить родную функцию геолокации

if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; }); } 

так что я могу использовать имя страны посетителя (возможно, вернуть информативный массив).

До сих пор все, что мне удалось найти, это функции, отображающие интерфейс карт Google, но никто из них не дал то, что я хочу, за исключением этой библиотеки, которая хорошо работала в этом примере, но по какой-то причине не работала на моем компьютере. Я не знаю, почему это пошло не так.

В любом случае, знаете ли вы, как я могу просто вернуть массив, содержащий информацию, такую ​​как страна, город и т. Д. Из значений широты и долготы?

Вам не нужно искать пользователя, если вам нужна только ваша страна. Вы можете посмотреть их IP-адрес в любой службе IP-to-location (например, maxmind ). Это будет очень важно в большинстве случаев.

Если вам действительно нужно получить свое местоположение, вы можете получить их lat / lng с помощью этого метода, а затем запросить обратную геокодирование Google или Yahoo .

Вы можете использовать мой сервис, http://ipinfo.io , для этого. Он предоставит вам IP-адрес клиента, имя хоста, информацию о геолокации (город, регион, страну, код города, почтовый индекс и т. Д.) И владелец сети. Вот простой пример, который регистрирует город и страну:

 $.get("https://ipinfo.io", function(response) { console.log(response.city, response.country); }, "jsonp"); 

Вот более подробный пример JSFiddle, который также выводит полную информацию об ответах, поэтому вы можете увидеть все доступные детали: http://jsfiddle.net/zK5FN/2/

Место, как правило, будет менее точным, чем внутренние данные геолокации, но оно не требует каких-либо прав пользователя.

Вы можете использовать свой IP-адрес для получения «страны», «города», «isp» и т. Д. …
Просто используйте одну из веб-служб, которые предоставляют вам простой api, такой как http://ip-api.com, который предоставляет вам услугу JSON по адресу http://ip-api.com/json . Просто отправьте запрос Ajax (или Xhr), а затем проанализируйте JSON, чтобы получить нужные данные.

 var requestUrl = "http://ip-api.com/json"; $.ajax({ url: requestUrl, type: 'GET', success: function(json) { console.log("My country is: " + json.country); }, error: function(err) { console.log("Request failed, error= " + err); } }); 

Очень простой в использовании сервис предоставляется ws.geonames.org . Вот пример URL:

http://ws.geonames.org/countryCode?lat=43.7534932&lng=28.5743187&type=JSON

И вот код (jQuery), который я добавил в ваш код:

 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { $.getJSON('http://ws.geonames.org/countryCode', { lat: position.coords.latitude, lng: position.coords.longitude, type: 'JSON' }, function(result) { alert('Country: ' + result.countryName + '\n' + 'Code: ' + result.countryCode); }); }); }​ 

Попробуйте на jsfiddle.net

См. Ipdata.co – сервис, который я построил быстро и обладает надежной производительностью, благодаря наличию 10 глобальных конечных точек, каждый из которых способен обрабатывать> 10 000 запросов в секунду!

В этом ответе используется «тестовый» API-ключ, который очень ограничен и предназначен только для тестирования нескольких вызовов. Зарегистрируйте свой собственный бесплатный API-ключ и получите до 1500 запросов ежедневно для разработки.

Этот fragment вернет детали вашего текущего ip. Чтобы искать другие IP-адреса, просто добавьте ip к https://api.ipdata.co?api-key=test url например.

 https://api.ipdata.co/1.1.1.1?api-key=test 

API также предоставляет поле is_eu указывающее, находится ли пользователь в стране ЕС.

 $.get("https://api.ipdata.co?api-key=test", function (response) { $("#response").html(JSON.stringify(response, null, 4)); }, "jsonp"); 
  

вы не можете получить местоположение города по ip. здесь вы можете получить страну с jquery:

 $.get("http://ip-api.com/json", function(response) { console.log(response.country);}, "jsonp"); 

Бесплатный и простой в использовании сервис предоставляется в Webtechriser (нажмите здесь, чтобы прочитать статью) (называемый wipmania ). Это служба JSONP и требует простой javascript- кодировки с HTML . Его также можно использовать в JQuery . Я немного изменил код, чтобы изменить формат вывода, и это то, что я использовал и нашел, что он работает: (это код моей HTML-страницы)

   

Для разработчиков, ищущих полнофункциональную утилиту геолокации, вы можете посмотреть на geolocator.js (я автор).

Пример ниже сначала попробует API-интерфейс HTML5 Geolocation для получения точных координат. Если это не удастся или отклонено, он будет возвращаться к поиску Geo-IP. Как только он получит координаты, он изменит геокодирование координат на адрес.

 var options = { enableHighAccuracy: true, timeout: 6000, maximumAge: 0, desiredAccuracy: 30, fallbackToIP: true, // if HTML5 geolocation fails or rejected addressLookup: true, // get detailed address information timezone: true, map: "my-map" // this will even create a map for you }; geolocator.locate(options, function (err, location) { console.log(err || location); }); 

Он поддерживает геолокацию (через поиск HTML5 или IP), геокодирование, поиск адресов (обратное геокодирование), расстояние и продолжительность, информацию о часовом поясе и многое другое …

Вы можете использовать ip-api.io, чтобы получить местоположение посетителя. Он поддерживает IPv6.

В качестве бонуса он позволяет проверять, является ли ip-адрес узлом tor, общедоступным прокси-сервером или спамером.

Код JavaScript:

 function getIPDetails() { var ipAddress = document.getElementById("txtIP").value; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { console.log(JSON.parse(xhttp.responseText)); } }; xhttp.open("GET", "http://ip-api.io/json/" + ipAddress, true); xhttp.send(); }   

Код jQuery:

 $(document).ready(function () { $('#btnGetIpDetail').click(function () { if ($('#txtIP').val() == '') { alert('IP address is reqired'); return false; } $.getJSON("http://ip-api.io/json/" + $('#txtIP').val(), function (result) { alert('Country Name: ' + result.country_name) console.log(result); }); }); });  
  • Vue 2 - Мутирующий реквизит vue-warn
  • Создание файла из blob
  • Javascript: В чем разница между функцией и classом
  • Как добавить событие click к элементу?
  • Ошибка отправки почты через google api с javascript
  • Соединение плоских данных
  • Как конвертировать из (x, y) экранных координат в LatLng (Google Maps)
  • Выполнить функцию JavaScript с регулярным интервалом времени
  • Как легко поднять при запуске файла .jar?
  • Угловая JS: Какова потребность в функции ссылки директивы, когда у нас уже есть controller директивы с объемом?
  • Подождите, пока флаг = true
  • Interesting Posts

    Как выйти из утилиты командной строки PostgreSQL: psql

    Имеет ли jQuery ручку для .delegate (‘hover’)?

    Ошибка при попытке запуска проекта: невозможно запустить программу. Не удается найти указанный файл

    Подсчитайте количество наблюдений / строк на группу и добавьте результат в кадр данных

    Установите глобальные горячие клавиши с помощью C #

    Android: Как вернуть async JSONObject из метода с помощью Volley?

    Что более эффективно: if (null == variable) или if (variable == null)?

    Возвращает $ .get данные в функции с помощью jQuery

    Intellij – Невозможно использовать новые classы Java 8 – Ошибка: «Использование API, зарегистрированное как @since 1.6+ ..»

    Не удалось найти tools.jar

    Как инициализировать значения HashSet по построению?

    WPF CommandParameter NULL первый раз, когда вызывается CanExecute

    Последовательность изображений для видеоstreamа?

    Практическое руководство. Модель базы данных в Visio 2013

    Как удалить ярлыки программ на рабочем столе в окне Windows 7

    Давайте будем гением компьютера.