Closed dchugunoff closed 4 months ago
Привет! Кажется, это баг в SDK, но нам понадобится некоторое время на починку. Срок пока обозначить не можем.
Пока можем предложить такое решение, которое по идее должно сработать: не добавлять руками и не создавать вообще MyLocationMapObjectSource. В 10-й версии NavigationView может делать это сама, и кажется это подойдет вам, учитывая что она создается и добавляется сразу и живет на протяжении всего жц (без ручных добавлений/удалений имеется ввиду) Должно работать даже если у NavigationView visibility == View.GONE.
Окей, каким образом тогда получать текущее местоположение и отображать его, если не добавлять MyLocationMapObjectSource ? Решение с маркером такое себе так как постоянно его перерисовывать это ужас.
К тому же, как я могу подключиться к DefaultLocationSource и получать локацию оттуда ? У вас ведь под капотом все уже реализовано и казалось бы, для чего писать свое получение локации руками, если можно взять из сдк, ведь на этом он весь и строится.
Более того, как я могу проверять активен ли NavigationManager ?
И могу ли я включить тмпо lite версию карты без цветов и всяких декоративных элементов для большей производительности ? Так как при старте навигации по маршруту начинает нереально лагать
Привет! NavigationView сама добавит MyLocationMapObjectSource если поймет, что его сейчас нигде нет. Баг в логике у нас как раз связан с этим, что она не совсем правильно понимает. То есть, вы уберете добавление его руками и все останется примерно как было – маркер будет рисоваться, перелет к местоположению будет работать. Подключаться руками к DefaultLocationSource тоже не будет необходимости.
как я могу проверять активен ли NavigationManager ?
Не совсем понимаю, что это значит в текущем контексте. Можно чуть более развернуто описать, что хочется проверять?
И могу ли я включить тмпо lite версию карты без цветов и всяких декоративных элементов для большей производительности ? Так как при старте навигации по маршруту начинает нереально лагать
Lite версия карты не предусмотрена. Тут бы помогло видео с комментами, в какой момент что-то идет не так и хотелось бы это поправить – тогда можем попробовать что-то предметно советовать.
То есть, маркер с моей локаций будет показываться даже в том случае, когда неактивна непосредственно навигация по маршруту ? Если так, то ок. Видео запишу если что позже
Про navigation manager и его активность. Я бы хотел знать когда он активен и подписаться на него чтобы получать уведомления о том, он активен или нет
Про маркер – да, все так. По крайней мере, на нашем стенде работает в таком варианте. Если не заведется у вас, то попробуем придумать что-то еще. Но должно работать: как я выше сказал, учитывая что вы добавляете NavigationView сразу, и больше не удаляете/передобавляете и т.д.
про NavigationManager – если я правильно понял, то можно подписаться на stateChannel, и там будут прилетать значения State. Но, кажется, вы итак это делаете, судя по коду. Другого способа отследить "активность" нет. Опять же, если я правильно понял, что такое активность – я это понимаю как состояние навигации (то, что перечисляет State как раз)
Выпилили добавление руками MyLocationMapObjectSource, даем navigationManager'y navigationManager и не видно маркера с локацией
if (!viewModel.navigationState) {
viewModel.navigationState = true
}
binding.navigationView.navigationManager = navigationManager
private val navigationManager by lazy {
NavigationManager(dgisSdkContext)
}
Так же не работает навигация если убрать MyLocationMapObjectSource. Просто висит вью "Потерян сигнал GPS". При переходе между экранами и при возвращении на фрагмент с картой - карта улетает непонятно куда.
Привет! Поняли, будем фиксить баг в ближайший хотфикс-релиз.
Привет. Починили в 10.4.0. Проверяйте.
Извиняюсь за долгий ответ. Все работает отлично!
Столкнулись с проблемой, крашит приложение при переходе с фрагмента, на котором есть NavigationView, и обратно. https://pastebin.com/JRem1Tzq Код, ненужное вырезал. https://pastebin.com/e9r9CuJA https://pastebin.com/2AN7BBSu https://pastebin.com/JiVdg8DR