Comments 46
Вот бы еще можно было использовать оффлайново карты и POI из OpenStreetMap! Я бы купил такую версию.
+4
Уважаю вашу компанию за внимательное отношение к быстродействию работы. Хотя в плане скорости меня больше всего поражает зум на карте в десктопной версии 2ГИС (например, плюсиком на клавиатуре или колёсиком мышки). Даже на моём довольно старом железе он настолько плавный, что хочется прыгать от счастья!
+9
Зато плавность зума и скролла у меня на андроиде явно оставляет желать лучшего.
+6
Скоро это будет пофиксено, т.к. появится аппаратное ускорение графики.
+4
Новая версия qt стала это поддерживать? Немного непонятно, почему раньше это не добавили.
0
Qt в целом поддерживает OpenGL уже давно (на «родных» платформах), но именно под Андроидом всё не так просто и work in progress. Мы затащили в свой порт Qt наработки из QPA и Necessitas и долго пилили их напильником. И ещё пилим и будем пилить и после релиза.
+4
Движок карты не использует Qt.
Вообще и Qt, и наш движок карты (см. iphone) уже давно умеют работать с OpenGL, просто до GL-версии для андроида руки добрались только сейчас.
Вообще и Qt, и наш движок карты (см. iphone) уже давно умеют работать с OpenGL, просто до GL-версии для андроида руки добрались только сейчас.
+1
Спасибо за оперативный ответ! Пользуюсь случаем напишу про ещё один досадный недостаток.
Процесс обновления карт выполняется в треде Activity, поэтому когда ставишь обновления (а это минут 5, не меньше), то он может прерваться при переключении на другое приложение. По хорошему такие вещи нужно переносить в сервис и показывать в notification area ход обновления. На практике я даже почти каждый месяц карты обновляю со 2-3 попытки (хорошо ещё, что не начинается с начала).
Процесс обновления карт выполняется в треде Activity, поэтому когда ставишь обновления (а это минут 5, не меньше), то он может прерваться при переключении на другое приложение. По хорошему такие вещи нужно переносить в сервис и показывать в notification area ход обновления. На практике я даже почти каждый месяц карты обновляю со 2-3 попытки (хорошо ещё, что не начинается с начала).
+4
UFO just landed and posted this here
Спасибо за детальное описание. Только про эвристику оценки как раз ничего и не написано. Кстати, abs(dx) + abs(dy) — это как-то уж совсем плохо, т.к. в таком случае в качестве результата можно получить чуть ли не первый попавшийся маршрут.
0
Это же оценочная часть стоимости в А*. Пройденная вычисляется точно.
0
Ну утрированный случай: между начальной и конечной точкой есть только 2 ребра — прямое и кривое. Первым попадается кривое, но его длина меньше abs(dx) + abs(dy). Я так понимаю, что после этого алгоритм А* останавливается.
0
В этом случае оба ребра попадут в «кучу» кандидатов на просмотр,
работа продолжается, пока в куче что-то есть и пока это что-то потенциально лучше уже найденных кандидатов.
Т.е. будут просмотрены оба ребра и выбран лучший вариант.
работа продолжается, пока в куче что-то есть и пока это что-то потенциально лучше уже найденных кандидатов.
Т.е. будут просмотрены оба ребра и выбран лучший вариант.
0
Попробую свою мысль на картинке пояснить:
Потом достаём ребро 2. «Потенциально» оно обеспечит маршрут, нарисованный пунктиром. То есть «потенциально» оно хуже имеющегося кандидата, поэтому дальше считаться не будет.
Картинка
Рёбра 1 и 2 лежат в куче. Сначала достаем ребро 1. Оно выдает готовый маршрут, то есть попадает в кандидаты.
Потом достаём ребро 2. «Потенциально» оно обеспечит маршрут, нарисованный пунктиром. То есть «потенциально» оно хуже имеющегося кандидата, поэтому дальше считаться не будет.
0
Попробую пояснить подробнее.
Нужно различать эвристику и отсечение. Эвристика определяет, в каком направлении будет распространяться волна на следующем шаге. Отсечение определяет, когда закончится алгоритм. Евклидову меру (обычное человеческое расстояние по прямой) можно использовать в обоих случаях, равно как и приближённое вычисление корня (сверху).
В общем же случае для эвристики и для отсечения можно использовать разные меры, причём некоторые работают только для эвристики, а некоторые подходят для отсечения, но куда менее эффективны для эвристики.
В случае с манхэттоновской мерой отсечение можно делать по максимальному из расстояний по осям, которое, кстати, не вызывает условный переход, «ломающий конвейер», т.к. реализуется эффективнее.
Нужно различать эвристику и отсечение. Эвристика определяет, в каком направлении будет распространяться волна на следующем шаге. Отсечение определяет, когда закончится алгоритм. Евклидову меру (обычное человеческое расстояние по прямой) можно использовать в обоих случаях, равно как и приближённое вычисление корня (сверху).
В общем же случае для эвристики и для отсечения можно использовать разные меры, причём некоторые работают только для эвристики, а некоторые подходят для отсечения, но куда менее эффективны для эвристики.
В случае с манхэттоновской мерой отсечение можно делать по максимальному из расстояний по осям, которое, кстати, не вызывает условный переход, «ломающий конвейер», т.к. реализуется эффективнее.
+1
Более того, такую меру нельзя использовать для отсечения, только для эвристики. Но в статье же сказано, что эвристики могут быть разные, нужно подбирать. Например, можно использовать максимальное из расстояний по осям, или же реализовывать приближённые алгоритмы вычисления корня.
0
На самом деле сейчас в релизной версии и для эвристики и для отсечения используется эвклидово расстояние.
Мы проводили эксперименты с манхеттеновским (dx+dy), чебышева (max(dx, dy)) и эвклидовым. Последнее дало наилучшие результаты и наименьшее число ошибочных маршрутов.
Были опасения за производительность на мобилках, но там уже в подавляющем большинстве стоят математические сопроцессоры, так что сейчас в итоге — эвклид.
Мы проводили эксперименты с манхеттеновским (dx+dy), чебышева (max(dx, dy)) и эвклидовым. Последнее дало наилучшие результаты и наименьшее число ошибочных маршрутов.
Были опасения за производительность на мобилках, но там уже в подавляющем большинстве стоят математические сопроцессоры, так что сейчас в итоге — эвклид.
0
Хорошее, правильное и вполне себе практичное решение, респект!
Правда у меня есть подозрение, что оптимальность выбора маршрутов можно повысить — хотя бы за счет статистики о пробках (по той же москве расстояние — не лучший критерий для оценки скорости).
Правда у меня есть подозрение, что оптимальность выбора маршрутов можно повысить — хотя бы за счет статистики о пробках (по той же москве расстояние — не лучший критерий для оценки скорости).
0
Есть, есть такая буква :)
В Н-ске предсказатель пробок работает довольно точно, постепенно это будет везде.
В Н-ске предсказатель пробок работает довольно точно, постепенно это будет везде.
0
Критерием является не расстояние, а время.
В Новосибирске и Санкт-Петербурге используется реальная статистика (упакованные данные из обычно), для остальных городов — синтетические скорости по классам дорог.
В Новосибирске и Санкт-Петербурге используется реальная статистика (упакованные данные из обычно), для остальных городов — синтетические скорости по классам дорог.
0
Поставил я на iPad 2gis. Пока был в wi-fi сети, все было нормально. Приехал в деревню к Маме — «ТРЕБУЕТСЯ ОБНОВЛЕНИЕ БАЗЫ»!
И нет доступа к старой (вчерашней) базе. Вот спасибо, подлецы!
И нет доступа к старой (вчерашней) базе. Вот спасибо, подлецы!
0
Старые базы не полностью совместимы с версией 2.9.0. Чтобы поиск работал офлайн, нужно обновить базу города до актуальной.
+1
Недружественное поведение по отношению к пользователю заключалось в том, что по наступлению какого-то момента времени, ПРИ ОТСУТСТВУЮЩЕМ доступе к инету, 2гис перестал работать.
Ни карт, ни расписаний, ни телефонов.
ПЕРЕСТАЛ! И выставил невыполнимые (на тот момент) требования!
Ни карт, ни расписаний, ни телефонов.
ПЕРЕСТАЛ! И выставил невыполнимые (на тот момент) требования!
0
Да, но просьба сразу обновить базу города была прописана в аннотации к обновлению приложения.
+1
Как бы сделал я:
1. При обновлении софта предупреждал бы пользователя.
2. Сохранял бы старую версию софта и баз до того, как пользователь подтвердит, что все «новье» загружено.
1. При обновлении софта предупреждал бы пользователя.
2. Сохранял бы старую версию софта и баз до того, как пользователь подтвердит, что все «новье» загружено.
0
К сожалению, маркеты (AppStore и Google Play) по такому принципу просто не работают. Они работают извне и неуправляемо по отношению к приложению и просто обновляют его, при этом даже нет возможности гарантировать, что пользователь прочитал описание «Что нового». Какие-то пуш-сообщения также не панацея, их далеко не все получат, не все прочитают и не все «правильно» отреагируют. Держать две версии приложения в iOS и Android тоже нет технической возможности (разве что только зашить две версии в один пакет, соответственно, увеличив его размер). Так что это тоже решение не идеальное.
+3
Ну что для пользователя критичнее — внезапно остаться без карт или скачать чуть больший пакет?
0
Что для пользователя удобнее — запускать одно приложение и выбирать город или иметь сразу пять? Хотя, конечно, большинство пользуется только одним городом.
0
У некоторых пользователей включено автообновление приложений. Проблемы бы в таком случае не возникло, если бы базы были опубликованы в маркете. А раз их там нет, было бы неплохо каким-либо образом уведомлять пользователя о несовместимости до (или хотя бы сразу после) обновления либо написать предупреждение о возможных проблемах в случае включения автоматического обновления 2GIS: так хотя бы часть пользователей будет предупреждена заранее.
P.S. Сам столкнулся с такой же ситуацией, но мобильный интернет был все же доступен. Пришлось лишь потратить немного времени на обновление базы.
P.S. Сам столкнулся с такой же ситуацией, но мобильный интернет был все же доступен. Пришлось лишь потратить немного времени на обновление базы.
0
Разместить базы в Маркете невозможно по техническим причинам, к сожалению. Их слишком много и они слишком большие. Кроме того, если их выкладывать туда как дополнительные файлы данных или как отдельные пакеты (это возможно для Андроида), то всё равно нет 100% гарантии их своевременного обновления вместе с оболочкой.
+1
При обновлении на 2.9.0 и сохранении устаревших данных на онлайн переходит только поиск.
Карты, справочник с рубрикатором, поиск проезда и т.п. остаются полностью работоспособны.
Карты, справочник с рубрикатором, поиск проезда и т.п. остаются полностью работоспособны.
+1
Как раз на выходный использовал 2GIS в Питере. Отличное приложение, заменило все виды карт и справочников.
А теперь о минусах:
* Очень часто мне предлагался маршрут, который содержит 2 пересадки в метро. Тогда как в Питере в центре в половине случаев достаточно проехать на одну станцию дальше и обойтись одной пересадкой.
* Не обозначен подземный переход между станциями метро. Реально сбивает с толку, когда показывается, что я должен выйти из метро,
перейти оживлённую магистраль и затем сесть на другую станцию. Тогда как на самом деле переход находится под землёй в самом метро.
А теперь о минусах:
* Очень часто мне предлагался маршрут, который содержит 2 пересадки в метро. Тогда как в Питере в центре в половине случаев достаточно проехать на одну станцию дальше и обойтись одной пересадкой.
* Не обозначен подземный переход между станциями метро. Реально сбивает с толку, когда показывается, что я должен выйти из метро,
перейти оживлённую магистраль и затем сесть на другую станцию. Тогда как на самом деле переход находится под землёй в самом метро.
0
Ну только рУтинг, а не рОУтинг, если уж не хотите по-русски называть прокладкой маршрутов. В целом — можно только позавидовать вашему объему данных, у нас граф на 2 порядка больше по размеру.
0
Неплохо.
0
Only those users with full accounts are able to leave comments. Log in, please.
Создание единого роутинга в офлайн и онлайн продуктах 2ГИС