Определить местоположение пользователя и показать на карте

Просмотров: 4968

Задача определить местоположение текущего пользователя и показать его на карте, с меткой. Сделать можно с помощью класса GeoIp - Пространство имён для классов для работы с геолокацией.

Определение местоположения пользователя

Для этого достаточно воспользоваться методами Manager::getGeoPositionLatitude и Manager::getGeoPositionLongitude. Просто передаем эти данные в переменные и выводим на страницу

$userLat = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLatitude();
$userLon = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLongitude();
$userCity = \Bitrix\Main\Service\GeoIp\Manager::getCityName();
echo 'Широта ' .  $userLat . ', Долгота: ' .  $userLon . ', В городе: ' .  $userCity;

В целом, есть метод Manager::getGeoPosition - в котором содержатся сразу и долгота и широта.

Также добавил город пользователя в переменной

Выводим местоположение на карте

Дальше все просто: выводим компонент bitrix:map.yandex.view - отображение карты с сервиса Яндекс.Карты. И передаем широту и долготу в в параметр MAP_DATA

В массив $arPlacemarks дублируем широту и долготу, а также название города. Этот массив используем в параметре PLACEMARKS который отвечает за метку на карте

$userLat = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLatitude();
$userLon = \Bitrix\Main\Service\GeoIp\Manager::getGeoPositionLongitude();
$userCity = 'Вы в городе: ' . \Bitrix\Main\Service\GeoIp\Manager::getCityName();

$arPlacemarks[] = array(
    "LAT" => $userLat,
    "LON" => $userLon,
    "TEXT" => $userCity,
); $APPLICATION->IncludeComponent( "bitrix:map.yandex.view", ".default", Array( "INIT_MAP_TYPE" => "MAP", "MAP_DATA" => serialize( array( 'yandex_scale' => 5, 'yandex_lat' => $userLat, 'yandex_lon' => $userLon, 'PLACEMARKS' => $arPlacemarks )), "MAP_WIDTH" => "100%", "MAP_HEIGHT" => "300", "CONTROLS" => "", "OPTIONS" => array(0=>"ENABLE_SCROLL_ZOOM",1=>"ENABLE_DRAGGING",), "MAP_ID" => "", ) );

Готово, получится что-то вроде этого:

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