Получить состояние пользователя с геолокации - PullRequest
17 голосов
/ 12 июня 2011

Какой самый эффективный способ получить статус пользователя в США?Является ли HTML5 Geolocation вариантом без необходимости привлечения карт Google?

Ответы [ 6 ]

12 голосов
/ 12 июня 2011

Вот пара примеров в JavaScript и JSON (с помощью jQuery ) с использованием как метода поиска IP (с помощью IPinfoDB ), так и геолокации Метод API (с помощью API Карт Google и YQL ).

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

IP Lookup в JavaScript

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

// API key excluded for brevity, see full demo.
var apiurl = 'http://api.ipinfodb.com/v3/ip-city';
$.getJSON(apiurl+'/format=json&callback=?',
    function(data){
        $("h3#location").html(data.regionName + ", " + data.countryName);
    }
);

API геолокации

Хотя этот метод и не идеален, онточно, как это получается.Пользователю предлагается поделиться сведениями о геолокации, которые могут сократить использование.

navigator.geolocation.getCurrentPosition(function(pos){
    $.getJSON(apiurl+'/format=json&callback=?',
        function(data){
            var regionName = data[...]AdministrativeAreaName;
            var countryName = data[...]CountryName;
            $("h3#location").html(regionName + ", " + countryName);
        }
    );
});

Там вы увидите, что я использовал API Карт Google v3 вместо YQL так что возможен обратный вызов JSON.

Полная демонстрация: http://jsfiddle.net/ZjXXh

2 голосов
/ 17 февраля 2012

Новая функция геолокации браузера очень полезна, если веб-сайту требуется точное местоположение для отображения локальных данных, ресторанов, магазинов и т. Д. Однако, если вы запустите его на ноутбуке, он попытается приблизиться к местоположению на основе беспроводных сетей. рядом, так что он может быть в нескольких километрах от него, что означает, что наиболее точным он может быть на уровне города

Что касается разработчика веб-сайта, если вы полагаетесь на это, вы должны знать, что сначала пользователь должен дать согласие на указание местоположения вашего веб-сайта. Большинство людей не видят, другие игнорируют сообщение и то, что вы делаете, когда у пользователя есть Internet Explorer или более старый браузер, который не поддерживает эту функцию, или если у него нет Wi-Fi, включенного на компьютере. Считая, что в большинстве случаев вы получите приблизительное местоположение в 2 км, в большинстве случаев вам потребуется точная оценка на уровне города, что не может быть больше, чем может дать вам геолокация по IP.

Преимущества геолокации по IP: * Вам не нужно беспокоиться, что у пользователя устаревший браузер * Вам не нужно беспокоиться о том, что пользователь напуган запросом поделиться своим местоположением. Он не знает, что это не его точное местоположение, а приблизительное. * Пользователь не получает уведомления о том, что вы используете его компьютер для отслеживания местоположения. * Это работает для компьютеров без Wi-Fi.

Я думаю, что идеальный способ сделать это - установить обе системы. Спросите пользователя о местоположении, но если браузер устарел или пользователь не указывает местоположение, переключитесь, чтобы получить местоположение с IP. Чтобы получить местоположение от IP, вы можете использовать IPGP API здесь: http://www.ipgp.net/developer-tools/

1 голос
/ 13 июня 2011

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

Служба геокодирования Google (а также обратного геокодирования) предоставляется бесплатно. Вы можете прочитать API здесь: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

Не забудьте подать заявку на получение ключа API Карт Google перед его использованием.

1 голос
/ 12 июня 2011

Я не уверен, что это более эффективно, но другой альтернативой является поиск по IP.Это может быть неверно и только приблизительное местоположение.

0 голосов
/ 05 сентября 2017

Используйте сторонний API, такой как ipdata.co

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

$.get("https://api.ipdata.co/74.125.230.195?api-key=test", function(data, status){
    console.log(data.region);
});
0 голосов
/ 12 июня 2011

Да, геолокация является наиболее эффективным способом по сравнению с gmaps, если вы действительно сидите и сравниваете скорости и накладные расходы (я имею в виду ваш сервер), как вам их предоставляет браузер.Gmaps требует знания его API, прежде чем вы сможете его использовать.Но геолокация проще.Статья здесь четко описывает геолокацию.Вот фрагмент кода, взятый с этого сайта, который довольно прост

navigator.geolocation.getCurrentPosition(show_map);
function show_map(position) {
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;
  // let's show a map or do something interesting!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...