Использование функции геопозиционирования в мобильном приложении
поддерживает использование функции геопозиционирования для мобильных приложений. Вы можете определять текущие координаты пользователя; отслеживать изменения его местоположения, скорость и направление движения; создавать геозоны и контролировать пересечение их границ.
- получение точных данных о местоположении пользователя;
 - доступ к геоданным в фоновом режиме.
 
В элементе проекта Мобильный Клиент, в свойстве Возможности, добавьте Геопозиционирование либо ГеопозиционарованиеВФоновомРежиме.
Получить координаты пользователя
Для начала работы с функцией геопозиционирования вызовите метод ПолучитьПоставщика типа Геопозиционирование. Этот метод возвращает объект типа ПоставщикГеопозиции, который содержит основную информацию об используемом провайдере геоданных: является ли он платным, какой вид связи использует для получения данных о местоположении пользователя (сотовую сеть, интернет или спутник), поддерживает ли он определение направления, скорости движения и высоты. Рекомендуем вам выбирать провайдера, который обеспечивает минимальное энергопотребление (ПолучитьСамогоЭнергосберегающегоПоставщика) и максимальную точность определения координат (ПолучитьСамогоТочногоПоставщика).
- ПолучитьПоследнееМестоположение — возвращает последнее известное местоположение пользователя;
 - ПолучитьТекущееМестоположение — возвращает текущее местоположение пользователя.
 
Эти методы возвращают объект типа ДанныеМестоположения, который содержит географические координаты местоположения пользователя, дату и время получения данных о местоположении, скорость и направление движения пользователя. Если пользователь не дал разрешение на доступ к геолокации или его местоположение не удалось отследить, возвращается Неопределено.
В примере ниже показано, как получить текущие координаты пользователя.
метод ПолучитьТекущееМестоположение()
    если Геопозиционирование.ПоддерживаетсяГеопозиционирование() 
        пер Поставщик = Геопозиционирование.ПолучитьСамогоТочногоПоставщика()
        если Поставщик != Неопределено
            пер Положение = Поставщик.ПолучитьТекущееМестоположение()
            если Положение != Неопределено
                // Создайте метод для обработки местоположения пользователя
                ОбработкаМестоположения(Положение)
            ;
        ;
    ;
;
метод ОбработкаМестоположения(Положение: ДанныеМестоположения)
    // Дата и время обновления координат
    пер Дата = Положение.Дата
    // Получение координат местоположения пользователя
    пер Широта = Положение.Координаты.Широта
    пер Долгота = Положение.Координаты.Долгота
    // Обработка полученных координат
    // ...
;
            Отследить изменения местоположения пользователя
Если вам необходимо отслеживать местоположение пользователя, используйте метод ПодключитьОбработчикИзмененияМестоположения типа ПоставщикГеопозиции. Передайте в него ссылку на обработчик, который должен вызываться при изменении местоположения пользователя, а также укажите время минимального периода обновления координат в секундах и минимальную дистанцию в метрах, на которую должно передвинуться устройство для срабатывания обработчика. Используйте параметр РаботаВФоне чтобы указать, должно ли приложение отслеживать изменение координат в фоновом режиме.
Например, если вам необходимо получать данные о местоположении пользователя, скорости и направлении его движения каждые пять секунд, используйте следующий код:
метод НачатьОтслеживание()
    если Геопозиционирование.ПоддерживаетсяГеопозиционирование()
        пер Поставщик = Геопозиционирование.ПолучитьСамогоТочногоПоставщика()
        
        если Поставщик != Неопределено
            пер Длительность = 5с
            пер Дистанция = 0
            пер РаботаВФоне = Истина
            
            если Поставщик.ПодключитьОбработчикИзмененияМестоположения(Длительность, Дистанция, 
                                                            РаботаВФоне, &ОбработкаМестоположения)
                Сообщить("Выполняется отслеживание изменения местоположения.")
            иначе
                Сообщить("Не удалось подключить обработчик изменения местоположения!")
            ;
        ;
    ;
;
метод ОбработкаМестоположения(Положение: ДанныеМестоположения)
    // Дата и время обновления координат
    пер Дата = Положение.Дата
    // Получение текущих координат местоположения пользователя
    пер Широта = Положение.Координаты.Широта
    пер Долгота = Положение.Координаты.Долгота
    // Направление движения в градусах
    пер Направление = Положение.Направление
    // Скорость движения (м/с)
    пер Скорость = Положение.Скорость
    // Обработка полученных данных
    // ...
;
            Задать геозоны для отслеживания перемещений пользователя
Геозоны — это ограниченные области на географической карте, которые позволяют вам осуществлять мониторинг передвижения объектов. Вы можете отследить, вошло ли устройство в определенный географический участок или вышло из него. поддерживает создание круговых геозон, расположение которых определяется географическими координатами центра круга и числом, задающим радиус круга в метрах. Чтобы создать геозону, используйте конструктор типа Геозона. При создании геозоны укажите её уникальный идентификатор. Если идентификатор не задан, он будет сгенерирован автоматически.
После создания необходимых геозон добавьте их к объекту типа Геозоны, чтобы начать отслеживание. Если при добавлении геозоны окажется, что геозона с таким идентификатором уже существует, старое определение геозоны заменится на новое. Свойство МаксимальноеКоличество типа Геозоны позволяет определить максимальное количество геозон, поддерживаемых устройством пользователя (20 для iOS и 100 для Android). Если вы превысите это число, будет выброшено ИсключениеГеозон.
- Геозона — определяет геозону, границу которой пересёк пользователь;
 - ВидПересеченияГеозоны — указывает, вошёл ли пользователь в текущую геозону или покинул её.
 
метод ДобавитьГеозоны()
    пер КоординатыЦентр = новый ГеографическиеКоординаты(55.752706, 37.621439, 0)
    пер ГеозонаЦентр = новый Геозона("Москва Центр", КоординатыЦентр, 3000)
    
    пер КоординатыСевер = новый ГеографическиеКоординаты(55.867510, 37.506481, 0)
    пер ГеозонаСевер = новый Геозона("Москва Север", КоординатыСевер, 3000)
    пер ГеозоныМосква = [ГеозонаЦентр, ГеозонаСевер]
    Геозоны.ПодключитьОбработчик(&ОбработкаГезоны)
    попытка 
        Геозоны.Добавить(ГеозоныМосква)  
    поймать Исключение: ИсключениеГеозон 
        Сообщить(Исключение.ВСтроку())
    ;
;
метод ОбработкаГезоны(Геозона: Геозона, ВидПересечения: ВидПересеченияГеозоны)
    если ВидПересечения == ВидПересеченияГеозоны.Вход
        Сообщить("Вы вошли в геозону \"${Геозона.Идентификатор}\".")
    ;
;
            