Выполняет попытку получения от провайдера актуального местоположения.
Синтаксис
ОбновитьМестоположение(<ИмяПровайдера>, <Таймаут>)Полное описание, параметры и ограничения
СредстваГеопозиционирования.ОбновитьМестоположение (LocationTools.UpdateLocation)
СредстваГеопозиционирования (LocationTools)
ОбновитьМестоположение (UpdateLocation)
Доступен, начиная с версии 8.3.3.
Синтаксис:
ОбновитьМестоположение(<ИмяПровайдера>, <Таймаут>)
Параметры:
<ИмяПровайдера> (обязательный)
Тип: Строка.
Содержит имя провайдера.
<Таймаут> (необязательный)
Тип: Число.
Определяет предельное время ожидания ответа от провайдера (в секундах).
0 - не устанавливать таймаут (время ожидания не ограничено).
Возвращаемое значение:
Тип: Булево.
Ложь - за выделенное время не был получен ответ от провайдера.
Описание:
Выполняет попытку получения от провайдера актуального местоположения.
Доступность:
Мобильный клиент, мобильное приложение (клиент).
Использование в версии:
Доступен, начиная с версии 8.3.3.
Методическая информация
Практические примеры
Запросить обновление с конечным временем ожидания
Ждём ответ провайдера не более 15 секунд, затем отдельно читаем последнее измерение. Ответ провайдера не выдаём за гарантированно новую точку.
Где и как запускать
Полный клиентский модуль собственной мобильной управляемой формы. Назначьте команды указанным процедурам; функции/экспортные обработчики разместите на уровне модуля.
Подготовка
Используйте собственное отдельное учебное мобильное приложение и собственный телефон. Эти методы доступны в мобильном клиенте/мобильном приложении (клиент), не в серверном общем модуле и не в тонком клиенте Windows.
Создайте собственную управляемую форму с указанными в уроке командами и вставьте полный модуль одного урока. Для реального чтения/отслеживания вручную разрешите геопозиционирование приложению в ОС; проверьте требуемые разрешения и возможности в настройках собственного мобильного приложения.
Включённая геолокация устройства не равна разрешению конкретному приложению. Провайдер может использовать сеть, быть платным, расходовать батарею или не поддерживать отдельное поле. Отказ в доступе не обходите.
Последнее измерение не обязательно свежее. Точные координаты не выводятся в сообщения, не записываются в файл и не отправляются на ваш сервер. Геопровайдер ОС сам может использовать сеть согласно своим настройкам.
В уроках отслеживания сначала изучите команду остановки. Не закрывайте форму до отключения собственных обработчиков/геозоны. Не используйте чужое приложение или приложение с рабочими геозонами.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Если Не СредстваГеопозиционирования.ИспользованиеДанныхГеопозиционированияВключено() Тогда
Сообщить("Геолокация отключена в настройках устройства");
Возврат;
КонецЕсли;
Провайдер = СредстваГеопозиционирования.ПолучитьСамогоТочногоПровайдера(Истина);
Если Провайдер = Неопределено Тогда
Сообщить("Подходящий провайдер сейчас недоступен");
Возврат;
КонецЕсли;
ДоОбновления = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(Провайдер.Имя);
ОтветПолучен = СредстваГеопозиционирования.ОбновитьМестоположение(Провайдер.Имя, 15);
Если Не ОтветПолучен Тогда
Сообщить("За 15 секунд ответ не получен; старый кэш не выдаём за новое измерение");
Возврат;
КонецЕсли;
ПослеОбновления = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(Провайдер.Имя);
Если ПослеОбновления = Неопределено Тогда
Сообщить("Ответ был получен, но последнее измерение отсутствует");
Возврат;
КонецЕсли;
Если ДоОбновления <> Неопределено Тогда
Сообщить("Момент измерения изменился: " + Строка(ПослеОбновления.Дата <> ДоОбновления.Дата));
КонецЕсли;
ПоказатьУчебныеХарактеристикиИзмерения(ПослеОбновления);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьУчебныеХарактеристикиИзмерения(Измерение)
Если Измерение = Неопределено Тогда
Сообщить("Последнего измерения нет");
Возврат;
КонецЕсли;
Сообщить("Момент измерения: " + Строка(Измерение.Дата));
Точка = Измерение.Координаты;
Сообщить(Точка.Широта >= -90 И Точка.Широта <= 90);
Сообщить(Точка.Долгота >= -180 И Точка.Долгота <= 180);
Сообщить("Высота определена числом: " + Строка(ТипЗнч(Точка.Высота) = Тип("Число")));
Если Измерение.ГоризонтальнаяТочность = Неопределено Тогда
Сообщить("Горизонтальная точность не определена");
Иначе
Сообщить("Горизонтальная точность, м: " + Строка(Измерение.ГоризонтальнаяТочность));
КонецЕсли;
Если Измерение.ВертикальнаяТочность = Неопределено Тогда
Сообщить("Вертикальная точность не определена");
Иначе
Сообщить("Вертикальная точность, м: " + Строка(Измерение.ВертикальнаяТочность));
КонецЕсли;
Если Измерение.Скорость = Неопределено Тогда
Сообщить("Скорость не определена");
Иначе
Сообщить("Скорость, км/ч: " + Строка(Измерение.Скорость * 3.6));
КонецЕсли;
Если Измерение.Направление = Неопределено Тогда
Сообщить("Направление не определено");
Иначе
Сообщить("Направление, градусов: " + Строка(Измерение.Направление));
КонецЕсли;
КонецПроцедурыРазбор по шагам
ОбновитьМестоположение имеет таймаут в секундах. 0 означает отсутствие ограничения, поэтому для учебной команды задано 15, не 0.
Это синхронное ожидание: интерфейс может ждать до ответа/таймаута. Не вызывайте этот метод циклом в обработчике формы.
Ложь означает, что за время не получен ответ; не продолжаем старым кэшем, выдавая его за свежий.
После ответа отдельно читаем последнее измерение и проверяем Неопределено. Сравнение дат показывает только изменение момента, не географическое перемещение.
Ни ответ, ни изменение даты не доказывают высокую точность или фактическое движение: характеристики измерения проверяются отдельно.
Как проверить результат
При недоступном провайдере/выключенной геолокации команда заканчивается понятным сообщением.
При таймауте не показывается старое значение как обновлённое; при ответе выводятся реальные доступные характеристики.
Ожидаемый результат
Показан ограниченный запрос измерения с раздельной обработкой таймаута, кэша и результата.
На что обратить внимание
Не оставляйте таймаут 0 для ожидания в учебной форме.
Включённая геолокация не заменяет разрешение ОС приложению; отказ может вызвать исключение.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.