Имя: Пароль:
1C
1С v8
СредстваГеопозиционирования.ОбновитьМестоположение не срабатывает, всегда возвращает ложь
0 peps2006
 
21.06.19
10:42
Добрый день всем.

Релиз мобильной платформы 8.3.14.62.

Планшет Asus ZenoPad 10, android 7.0

Есть вот такой код:

ТекущийПровайдер = СредстваГеопозиционирования.ПолучитьСамогоТочногоПровайдера().Имя;
СредстваГеопозиционирования.ОбновитьМестоположение(ТекущийПровайдер,  30);
ДМ = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ТекущийПровайдер);

Переменная ТекущийПровайдер  = "gps", все корректно.


Какой бы таймаут не стоял в СредстваГеопозиционирования.ОбновитьМестоположение, всегда возвращается ложь и следующая строка кода в переменную ДМ возвращает Неопределено.
Причем при таймауте, например в 30 секунд, команда ОбновитьМестоположение может выполняться то все 30 секунд, то 5 секунд, но все равно не возвращает текущее местоположение.

При этом сторонние программы, типа GPS Test, показывают координаты отлично.

Может есть у кого-то наработки в этом направлении?
И еще вопрос при сборке приложения обязательно ли указывать ключ для работы с картами Google, если планируется использовать только средства геопозиционирования?
1 Василий Алибабаевич
 
21.06.19
11:05
(0) Вот так работает
#Если МобильноеПриложениеКлиент Тогда
Если НЕ СредстваГеопозиционирования.ИспользованиеДанныхГеопозиционированияВключено() Тогда
  ПоказатьПредупреждение(,"Средства геопозиционирования отключены в настройках устройства.", 60);
  Возврат;
КонецЕсли;
        
ПровайдерGPS = СредстваГеопозиционирования.ПолучитьПровайдера("gps");
        
Если ПровайдерGPS = Неопределено Тогда
  ПоказатьПредупреждение(,"Не найден провайдер ГЕОДанных ""gps"".", 60);
  Возврат;
КонецЕсли;
        
Если СредстваГеопозиционирования.ОбновитьМестоположение(ПровайдерGPS.Имя, 60) Тогда
  Местоположение = СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ПровайдерGPS.Имя);
  Если НЕ Местоположение = Неопределено Тогда
    Объект.ГЕОДолгота = Местоположение.Координаты.Долгота;
    Объект.ГЕОШирота = Местоположение.Координаты.Широта;
    ЭтаФорма.Модифицированность = Истина;
  КонецЕсли;
Иначе
    ПоказатьПредупреждение(,"Не удалось получить координаты.", 60);
КонецЕсли;
#КонецЕсли
2 Василий Алибабаевич
 
21.06.19
11:10
+(1) По второму вопросу.
Средства геопозиционирования никакого отношения к гуглемапсам не имеют. Оно есть аппаратная часть вашего девайса.
Вот это вот "ключ для работы с картами Google" нужен если хотите на мапсах отображать свои значки, описания, какие-то дополнительные тэги... Для отображения стандартных гуглевских отметок или маршрутов оно не нужно.
3 Василий Алибабаевич
 
21.06.19
11:19
+(2) Пример отображения маршрута на карте :
#Если МобильноеПриложениеКлиент Тогда
  Адрес = "https://www.google.com/maps/dir/'49.937,36.423'";;

  Счетчик = 0;
  Для Каждого текСтрока ИЗ Объект.Покупатели Цикл
    К = ПолучитьКоординаты(текСтрока.Контрагент);
    Если (К.Долгота = 0) ИЛИ (К.Широта = 0) Тогда
      Сообщить("Покупатель " + РеквизитОбъекта(текСтрока.Контрагент, "Наименование") + " исключен из маршрута. Не заданы координаты");
      Продолжить;
    КонецЕсли;
    Адрес = Адрес + "/'"+ Формат(Окр(К.Широта, 3), "ЧДЦ=3; ЧРД=.; ЧГ=0") + "," + Формат(Окр(К.Долгота, 3), "ЧДЦ=3; ЧРД=.; ЧГ=0") + "'";
    Счетчик = Счетчик + 1;
    Если Счетчик = 22 Тогда
      Прервать;
    КонецЕсли;

  КонецЦикла;
  ЗапуститьПриложение(Адрес);
#КонецЕсли
4 peps2006
 
21.06.19
11:53
Спасибо за подробный ответ!
Вот это то как раз у меня и возвращает всегда ложь:

Если СредстваГеопозиционирования.ОбновитьМестоположение(ПровайдерGPS.Имя, 60) Тогда

Не могу понять почему.
Какой бы тайм-аут не ставил, спутники видны, смотрю в другой проге.
А какой релиз мобильной платформы вы используете где у вас работает?
5 Василий Алибабаевич
 
21.06.19
11:57
(4) 8.3.10.84
6 Василий Алибабаевич
 
21.06.19
11:58
+(5) На Гэлэкси 4 и Гэлэкси 8
7 Василий Алибабаевич
 
21.06.19
12:03
Да. Кстати был какой-то прикол с настройками ЖПС на девайсах. Стояла программа-трекер. И когда она работата 1С не могла получить координату. Кстати и аккумулятор разряжался с безбожной скоростью.
Как вылечил уже не помню.
8 peps2006
 
21.06.19
16:05
Если в самом устройстве поставить определение координат только по GPS, то СредстваГеопозиционирования.ОбновитьМестоположение(ПровайдерGPS.Имя, 60) возвращает Истину, но после этого  команда СредстваГеопозиционирования.ПолучитьПоследнееМестоположение(ПровайдерGPS.Имя) возвращает Неопределено
Ерунда какая-то ...
Команды то всего две, куда копать не понятно, перебирать все релизы подряд, вдруг где заработает ...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn