Как определить свое местоположение при помощи javascript

Задача определения местоположения, скажу честно, встречается очень редко. И хотя на деле все куда интересней, наши сайты привыкли делать универсальными под всех и сразу, никакой персонализации, а ведь это тренд 2015 года 🙂

Как узнать страну и город при помощи api yandex maps

Для это задачи нам понадобится скрипт Яндекса, и не забывайте про jQuery 🙂

<script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>

В нашем скрипте сразу пишем:

ymaps.ready(function(){

    console.log(ymaps.geolocation);

});

и видим перед собой объект – лично для меня самыми привлекательными свойствами тут являются city и country. Ну, во-первых, мы можем где-нибудь записать город у себя на сайте (главное не переборщить, а то подумают что вы их вычислили по ip 🙂 )

ymaps.ready(function(){

    var geo = ymaps.geolocation;

    $('.city').html(geo.city);
});

а во-вторых – зная страну, мы можем записать значение в куки браузера. Кстати, если в дальнейшем вы захотите использовать эти данные не только через js, советую прочитать о том как записать просмотренные товары.

Как записать в куки при помощи javascript

Для начала нам понадобится jquery.cookie.js. Рассмотрим следующий пример – наш интернет магазин работает для России и Украины, и мы хотим сделать так, чтобы пользователю цены отображались в соответствующей валюте.

ymaps.ready(function(){
            //console.log(ymaps.geolocation);
            var geo = ymaps.geolocation;
            $('.city').html(geo.city);

            if (geo.country == 'Украина') {
                        var myChoice = 'UAH';
            } else if (geo.country == 'Россия') {
                        var myChoice = 'RUB';
            }
 
            $.cookie('CURRENCY', myChoice, {
                        expires: 5,
                        path: '/',
            });
});

Давайте пройдемся по коду – мы записываем объект содержащий наши гео данные в переменную, имя нашего города записываем на странице в класс city, а дальше смотрим откуда зашел пользователь и записываем нашу валюту в переменную. После этого – записываем в куки браузера записываем на 5 дней значение переменной. По синтаксису видим, что CURRENCY’ – название нашей переменной в куки, в myChoice мы записали значение, expires – количество дней, ну и путь ставим относительно корня сайта.

И это далеко не все варианты применения – для некоторых городов есть свои телефоны, свои службы и условия доставки. Конечно, пользователю нужно давать возможность прочитать про все города, но в первую очередь ему будет интересна информация для своего города и страны.

ПС – можно также дописать проверку “а есть ли такая переменная в куки”:

// console.log($.cookie('CURRENCY'));

if (!$.cookie('CURRENCY')) {
            $.cookie('CURRENCY', myChoice, {
                        expires: 5,
                        path: '/',
            });
}

Как в 1С-Битрикс использовать валюту пользователя

Проверим, есть ли в куки валюта (этот код я поместил в самый верх шаблона):

<?
if ($_COOKIE['CURRENCY']) {
            $current_currency = $_COOKIE['CURRENCY'];
} else {
            $current_currency = 'USD';
}
?>

А в вызове шаблона компонента, например каталога, меняем соответствующую строчку на:

"CURRENCY_ID" => $current_currency,

Таким вот образом мы можем узнать свое местоположение, вывести страну и даже город, записать все это дело в куки при помощи js, и потом, уже на стороне сервера, вытащить валюту нашей страны. Магия, что тут еще сказать 🙂

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь