четверг, 9 мая 2013 г.

html5 Геолокация (geolocation)

Для того что бы определить страну или город посетителя по ip можно использовать html5 + google maps api.

В простейшем случае нам надо всего лишь вызвать

navigator.geolocation.getCurrentPosition()

Пример:


navigator.geolocation.getCurrentPosition(foundLocation, noLocation);


function foundLocation(position)
{
    console.log(location.address.city);
}

function noLocation()
{
    console.log('no position');
}



И вроде бы всё просто и хорошо, но мы познаем настоящую печаль, когда окажется что данный способ работает только в firefox.

Для того, что бы сделать код более универсальным, придется использовать сервис для обратного геокодирования, который предоставляет гугл:


navigator.geolocation.getCurrentPosition(foundLocation, noLocation);


function foundLocation(position)
{
    $.get('http://maps.googleapis.com/maps/api/geocode/json?latlng='+position.coords.latitude+','+position.coords.longitude+'&sensor=false', 


    function(response){
        console.log(response);
    });

}

function noLocation()
{
    console.log('no position');
}


В итоге у нас окажется объект response с кучей полезной информации расположении пользователя.

Вот что он вернул мне например, интересующие на данные находятся в results:

Object {results: Array[14], status: "OK"}
results: Array[14]
0: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
9: Object
10: Object
11: Object
12: Object
13: Object
length: 14
__proto__: Array[0]
status: "OK"
__proto__: Object


Для работы всего этого дела надо не забыть подключить google maps api конечно же:

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false&amp;libraries=places"></script>

1 комментарий:

  1. Это все не серьезно. Хочу в HTML5 Geolocation долготу и широту сохранять в БД например в MySQL. Может кто-нибудь мне поможет в этом деле?!

    ОтветитьУдалить