Вхождение в геозону СтредстваГеопозиционирования

1. UPKA 29.05.23 13:53 Сейчас в теме
Здравствуйте, подскажите, если кто то использовал проверку на вхождение в геозону при разработке МП, как создать геозону и определить вхождение?

По данному инструменту практически не нашел документации (примеров). По синтекс - помощник не совсем понятно.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 67 29.05.23 18:21 Сейчас в теме
#Если МобильноеПриложениеКлиент Тогда
Если НЕ СредстваГеопозиционирования.ИспользованиеДанныхГеопозиционированияВключено() Тогда
  ПоказатьПредупреждение(,"Средства геопозиционирования отключены в настройках устройства.", 60);
  Возврат;
КонецЕсли;
        
ПровайдерGPS = СредстваГеопозиционирования.ПолучитьПровайдера("gps");
        
Если ПровайдерGPS = Неопределено Тогда
  ПоказатьПредупреждение(,"Не найден провайдер ГЕОДанных ""gps"".", 60);
  Возврат;
КонецЕсли;
        
Если СредстваГеопозиционирования.ОбновитьМестоположение(ПровайдерGPS.Имя, 60) Тогда
  Местоположение = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ПровайдерGPS.Имя);
  Если НЕ Местоположение = Неопределено Тогда
    Объект.ГЕОДолгота = Местоположение.Координаты.Долгота;
    Объект.ГЕОШирота = Местоположение.Координаты.Широта;
    ЭтаФорма.Модифицированность = Истина;
  КонецЕсли;
Иначе
    ПоказатьПредупреждение(,"Не удалось получить координаты.", 60);
КонецЕсли;
#КонецЕсли
Показать
3. UPKA 29.05.23 18:46 Сейчас в теме
(2)
(2)это пример местоположения, а имею ввиду вхождение в геозону.
Если координаты выходят за границы геозоны.
4. laperuz 46 30.05.23 06:57 Сейчас в теме
(3)С геозонами не работал, но по синтакс-помощнику все довольно просто смотрится.

В обработчике на клиенте(например, при открытии формы) получаете из базы/создаете геозону, включаете ее, подписываетесь на вход/выход из геозоны.

&НаКлиенте
Процедура ВключитьОтслеживаниеПересеченияГраниц()
    МассивГеозон = ПолучитьГеозоныОтслеживания();
    ВключитьОтслеживаниеГеозон(МассивГеозон);
    ОбработчикПересечения = Новый ОписаниеОповещения("ПриПересеченииГраницыГеозоны", ЭтаФорма);
    ПодключитьОбработчикПересеченияГраницОтслеживаемыхГеозон(ОбработчикПересечения);
КонецПроцедуры;

&НаКлиенте
Процедура ПриПересеченииГраницыГеозоны(Геозона, ПоложениеОтносительноГеозоны, ДополнительныеПараметры)
    Если Геозона.Идентификатор = "ГеозонаМосква" Тогда
        Если ПоложениеОтносительноГеозоны = ПоложениеОтносительноГеозоны.Внутри Тогда
            Сообщить("Вы въехали в Москву");
        Иначе
            Сообщить("Вы выехали из Москвы");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
Показать
5. UPKA 30.05.23 09:36 Сейчас в теме
(4)А как создать сами геозоны?
6. laperuz 46 31.05.23 06:12 Сейчас в теме
(5)Ну например создаете справочник "Геозоны" с числовыми реквизитами Высота, Долгота, Радиус и стандартным наименованием, заполняете руками координаты центра геозоны(ну или можно завязать создание на некоторые координаты, получаемые по GPS), неважно.

Далее примерно так:

&НаСервере
Функция ПолучитьГеозоныОтслеживания()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	Геозона.Ссылка КАК Ссылка,
               |	Геозона.Наименование КАК Наименование,
               |	Геозона.Широта КАК Широта,
               |	Геозона.Долгота КАК Долгота,
               |	Геозона.Радиус КАК Радиус
               |ИЗ
               |	Справочник.Геозона КАК Геозона";  

Выборка = Запрос.Выполнить().Выбрать();

МассивГеозон = Новый Массив;

Пока Выборка.Следующий() Цикл                                     
	КоординатыГеозоны = Новый ГеографическиеКоординаты(Выборка.Широта, Выборка.Долгота);
	Геозона = Новый Геозона(Выборка.Ссылка, Выборка.Наименование, КоординатыГеозоны, Выборка.Радиус);
	
	МассивГеозон.Добавить(Геозона);
КонецЦикла;

Возврат МассивГеозон;
КонецФункции
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот