1С-Битрикс

Поиск ближайшего объекта к текущему местоположению пользователя по координатам в 1C-Bitrix

1C-Bitrix. Находим наименьшее расстояние от текущего местоположения пользователя до объектов.

sqlka.ruОпубликовано: Чтение: 1 мин.
Поиск ближайшего объекта к текущему местоположению пользователя по координатам в 1C-Bitrix

Сначала подключаем GeoIp для определения текущего местоположения пользователя

<?php
use \Bitrix\Main\Service\GeoIp;

// получаем ip пользователя
$userIpAddress = GeoIp\Manager::getRealIp();

// получаем координаты
$lt = GeoIp\Manager::getGeoPositionLatitude($userIpAddress, "ru"); // широта
$ln = GeoIp\Manager::getGeoPositionLongitude($userIpAddress, "ru"); // долгота

// класс для расчёта расстояния между точками
class Point
{
    public $x, $y;

    function __construct($x, $y)
    {
        $this->x = $x;
        $this->y = $y;
    }

    function distanceTo(Point $point)
    {
        $distanceX = $this->x - $point->x;
        $distanceY = $this->y - $point->y;
        return sqrt($distanceX * $distanceX + $distanceY * $distanceY);
    }

    function __toString()
    {
        return 'x: ' . $this->x . ', y: ' . $this->y;
    }
}

// точка пользователя
$userPoint = new Point($lt, $ln);

// массив точек магазинов (пример)
$shops_info = [
    new Point(0, 0.02),
    new Point(0.5, 0.3),
    new Point(1, 1),
    new Point(-1, -2)
];

// инициализация ближайшей точки
$nearestPoint = $shops_info[0];
$minDistance = $userPoint->distanceTo($nearestPoint);

// поиск ближайшей точки
foreach ($shops_info as $point) {
    $distance = $userPoint->distanceTo($point);
    if ($distance < $minDistance) {
        $minDistance = $distance;
        $nearestPoint = $point;
    }
}

// результат
echo "Ближайшая точка: " . $nearestPoint . " (расстояние: " . $minDistance . ")";
?>

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

1С-Битрикс

Логирование в 1С-Битрикс: полное руководство для разработчика

Полное руководство по логированию в 1С-Битрикс: какие логгеры есть, как их настроить, форматировать сообщения и подключать к своим классам. Примеры кода и советы по использованию PSR-3

sqlka.ruЧтение: 4 мин.
← Все статьи