Выложено обновление версии программы под все системы.
Актуальная версия 1.82.1308.

Версия под iOS - в связи с проверкой будут выложена в магазин чуть позже.

Увеличен интервал "отвала" GPS до 15 секунд
Значение вынесено в settings.xml (без доступа из настроек)
При отключенной галочке "сглаживать вращение" карта ориентируется без отклонения угла
Исправлено "мерцание" экрана на iOS
Множество мелких исправлений

Ссылки для скачивания:
Android APK:
https://navikey.ru/files/7w/7ways-1308/7ways.apk

Linux:
https://navikey.ru/files/7w/7ways-1308/7ways-linux-rpi-arm.zip
https://navikey.ru/files/7w/7ways-1308/7ways-linux-ubuntu-bionic-x86_64.zip
https://navikey.ru/files/7w/7ways-1308/7ways-linux-ubuntu-bionic-x86.zip
https://navikey.ru/files/7w/7ways-1308/7ways-linux-ubuntu-xenial-x86_64.zip
https://navikey.ru/files/7w/7ways-1308/7ways-linux-ubuntu-xenial-x86.zip

Windows CE:
https://navikey.ru/files/7w/7ways-1308/7ways-win-ce-arm.zip
https://navikey.ru/files/7w/7ways-1308/7ways-win-ce-mips.zip
https://navikey.ru/files/7w/7ways-1308/7ways-win-ce-sh4.zip

Windows NT:
https://navikey.ru/files/7w/7ways-1308/7ways-win-nt-x86_64.zip
https://navikey.ru/files/7w/7ways-1308/7ways-win-nt-x86.zip
Группа в Telegram (https://t.me/navikey)
Поддержка пользователей и общение.

Также запущена поддержка пользователей в Telegram (https://t.me/navikey_support_bot)
Запущен новостной блог http://blog.navikey.org/
В блоге публикуются сообщения о текущих работах и планах.
Доступна RSS подписка на новости.

Проблема с прорисовкой карты

отредактировано February 2014 Раздел: Программы
Здравствуйте.

Не нашел соответствующего обсуждения и решил создать новое.
Программа хорошая, но вот прорисовка карт в ней местами ставит в ступор.

1. так как карта создана в векторном формате, то у нее есть определенные свойства: это заливка и граница
и если соединение нескольких линий с этими свойствами обрабатывается не правильно, то они начинают очень странно отображаться (см. скрин ниже)
<img src="/vanilla/uploads/FileUpload/14/694.jpg" />
когда в движении, в такой ситуации, очень сложно определиться с поворотом.

посмотрим на это-же место через OSM:
<img src="/vanilla/uploads/FileUpload/15/695.jpg" />
Сразу видно какая дорога куда ведет.

2. из-за особенности вектора, местами дорога просто разрывается:
особенно это видно на многих кольцевых поворотах (для наглядности я изменил цвет кольцевой дороги)
<img src="/vanilla/uploads/FileUpload/16/696.jpg" />
тут мы наблюдаем веер дороги )) а также проблему изложенную в первом пункте со стыковкой границ.

конечно в OSM все хорошо.

Решение:

Так как векторные дороги в карте это просто линии со свойствами, то нужно сделать чтобы фон линий был выше по слою цвета границ, при этом начальная точка линии и конечная должны закругляться но не должны иметь границу.
вот пример с OSM
<img src="/vanilla/uploads/FileUpload/17/697.jpg" />
тут мы видим что у белой дороги есть граница, но на конце она закругляется и уже не имеет цвета границы

Также чтобы не было путаницы с наложением второстепенных дорог на главные, нужно их разделить на слои:
1 Автомагистрали - самый верхний слой (выше всех объектов на карте)
2 Трассы, Проспекты - второй слой, он находится под первым.
3 Съезды с автомагистрали - третий слой, так они будут качественно соединяться
4 Съезды Трассы, Проспекты - четвертый слой
5 Дороги общего пользование - пятый слой
и так далее.

По поводу разрывов линий, не знаю как это сделано у вас в программе, но в любых векторных редакторах есть одно свойство, это тип разрыва: без свойства (это как в навигаторе), мягкий угол, твердый угол
Вообще было бы правильнее сделать у всех линий мягкие углы.

Благодарю.
Надеюсь это поправят, готов чем угодно помочь в решении любых вопросов :)
Очень хочется чтобы Ваша программа стала лучшей из всех!
Тэги темы:

Комментарии

  • отредактировано May 2014
    Добрый день снова.

    Надеюсь первое моё сообщение дошло до разработчиков и они его прочитали.

    Теперь я хочу поговорить об оптимизации прорисовки карт.

    Как и в первом посте я повторюсь что это векторные карты и к ним нужен определённый подход. Все сайты и программы которые используют данный тип карт работают быстро, но вот к сожалению СемьДорог тормозит даже на очень мощных устройствах и компьютерах.

    В чем же причина?

    Так вот, это я и попытаюсь объяснить, также расписать решение данной проблемы.

    Карты в СемьДорог тормозят (особенно на отдалении карты) из-за чрезмерно большого количества векторных точек и того, что к этим точкам ещё применяются разные стили прорисовки.

    На приближение в 200 метров мы видим дома и некоторые дороги и всё работает хорошо, в это время на экране прорисовывается примерно 150 векторных точек.
    Но вот когда мы отдаляем карту на 5 км, то всё начинает тормозить из за того что на экране уже прорисовывается приблизительно 1 000 000 точек, и на прорисовки всего этого уходит много ресурсов.

    Разработчики для оптимизации сделали так что при отдалении часть объектов отключается, там самым снизив нагрузку на устройство. Это конечно хорошо.

    Но есть ещё один способ который использует большинство тех у кого есть такие карты. Это уменьшение векторных точек по мере отдаления от земли.

    <img src="/vanilla/uploads/FileUpload/8/808.jpg" />
    Представим что на картинке нарисована дорога. Так она выглядит при максимальном приближение и неё есть 5 опорных точек.
    Так вот мы начинаем отдалять её и на расстоянии уже в 2000 км. у нас удаляются промежуточные точки (2, 4) и на экране прорисовывается только точки (1, 3, 5).
    Далее мы отдаляем ещё дальше уже на 5000 км. у нас удаляется ещё промежуточная точка (3) остаются для прорисовки на экране только точки (1, 5)

    Тем самым отдаляя расстояние у нас уменьшаются количество точек для прорисовки.

    И это не повлияет на навигацию в программе, так как на отдалении абсолютная точность не так важна как скорость работы.

    Тут может возникнуть вопрос как определить опорные точки, которые не должны удаляться, тут всё просто, опорными точками являются точки, которые соединяются с более чем 2 точками (проще говоря это перекрёстки и съезды), а также точки которые имеют большой угол соединения с соседними точками (где-то более 10 градусов), чтобы повороты не превращались в прямые.

    Но ещё необходимо не забывать про объекты, их тоже таким же способом нужно обрабатывать. Я говорю про реки и особенно Лес в котором больше векторных точек чем на линиях дорог.

    Таким образом можно кардинально сократить нагрузку на процессор и ускорить прорисовку карты.

    теперь давайте посмотрим на то что сейчас есть:
    <img src="/vanilla/uploads/FileUpload/9/809.jpg" />
    Если посмотреть на дороги они выглядят не чисто белыми, а с какими-то хаотичными точками, а границы дорог местами какие-то ребристые.

    Так вот тут как раз и прорисовываются все точки с нулевого масштаба, по этому стиль который применяется к дороге для каждой точки рисуется, а из-за большого масштаба и очень плотного нахождения точек друг к другу, стили начинаю накладываться, и получается вот такая картина и соответственно тормоза.

    Если применить оптимизацию описанную выше, то дорога от МКАД до центра Москвы будет всего с 10-20 точками, за место сегодняшних ~1000.


    Я конечно понимаю что на словах это звучит хорошо, но вот написать данный алгоритм просчёта думаю сложновато-то, но буду надеяться что в скором времени, будет проделана оптимизация по прорисовки карты, ведь программа хорошая и у неё большой потенциал в будущем.

    Спасибо разработчикам.

    П.С.: это не все способы оптимизации;)
  • Добрый день!

    Огромное спасибо, за ваши очень подробные и правильные советы.
    В наших планах, конечно же, есть работа над этими двумя очень большими задачами - но к сожалению пока они отложены в связи с большой нагрузкой и давлением на другие задачи.
    Частично эти задачи мы стараемся решать в каждом релизе и приближаем момент того, когда можно будет окончательно решить проблемы, которые вы обозначили.

    С большим удовольствием и благодарностью читаем ваши советы и если вас что то еще волнует - обязательно напишите нам - возможно что то мы еще не увидели...

    Еще раз огромное спасибо!
  • Вставлю свои 5 копеек. Я уже как-то говорил об этом. Желательно, чтобы порядок отрисовки полигонов можно было задавать, например, в скине. Сейчас их порядок отображения зависит от размера. В результате может получиться так, как сейчас в Клайпеде, полигон города закрывает воду.
    <img src="/vanilla/uploads/FileUpload/10/810.jpg" />
Войдите или Зарегистрируйтесь чтобы комментировать.