Как мы добавили подъезды на карту и сократили размер баз на 10%



    В конце прошлого месяца 2ГИС начал отображать подъезды. Входы в организации мы показываем аж с 2013 года, а подъезды — вроде бы те же входы. Так почему только сейчас? Все внутренние продукты и процессы готовы, всего-то нужно дособрать ещё чуть-чуть да подправить отображение в UI.

    Кроме стандартного ответа «Были другие приоритеты» есть и не совсем стандартный: «Не всё так просто». Эта статья про то, какие были сложности и как мы их решили.

    Во-первых, подъезд — это не вход. Так, в один подъезд может вести несколько входов, обычно с разных сторон здания. Некорректно и определение «(многоуровневый) блок квартир с общим входом». Бывает, что один вход ведёт на первый этаж подъезда, а другой — на второй и последующие этажи.

    Подъезды с двумя входами

    Во-вторых, подъезды хочется искать.

    Подъезды в результатах поиска

    Это довольно востребованная возможность, так как подъезды далеко не всегда расположены очевидным образом.

    Дом с не самой очевидной нумерацией подъездов

    Помимо номеров подъездов встречаются и названия (как правило, из одной буквы).

    Буквы в названиях подъездов

    Или даже как в Калининграде — отдельный адрес присваивается именно подъезду.

    Независимая нумерация подъездов в Калининграде

    В-третьих, мы решили, что если уж делать поиск подъездов, то почему бы сразу не поддержать и поиск по номеру квартиры. Решили — и собрали диапазоны квартир, правда, пока без поэтажной привязки. Как и с подъездами, у квартир могут быть не только числовые названия (чаще всего встречаются варианты с буквой «а»), да и диапазоны далеко не всегда непрерывны. В старых домах Санкт-Петербурга нумерация довольно странная: квартиры 1 и 3 могут находиться в одном подъезде, а квартира 2 — в противоположной части здания.

    Типичный подъезд старого Петербурга

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

    В-четвёртых, подъезды хочется показывать на карте всегда, а не только когда мы изучаем информацию конкретного дома или подъезда.

    И, наконец, подъездов много — по текущей оценке в одной только Москве их около ста тысяч. Первая оценка «на пальцах» и вовсе давала какие-то астрономические цифры — мы ошиблись раз в шесть в большую сторону.

    Выводы:

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

    Приступаем к решению


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

    Как? С одной стороны, нужно уменьшить текущий размер данных, с другой — можно придумать такой формат хранения информации о подъездах, чтобы объём дополнительных данных был минимальным.

    Сокращаем объём данных


    Уменьшать можно двумя способами:

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

    Эволюция формата хранения данных до наступления эры подъездов

    Самый первый и самый простой вариант


    Традиционный способ сохранить сложные данные — нормализовать их, поместить в табличную базу данных и создать вспомогательные индексы. Когда-то 2ГИС так и делал, разве что для уменьшения размера содержимое каждой таблицы сортировалось таким образом, чтобы как можно чаще значения ячеек совпадали со значениями из предыдущей строки. Столбцы мы хранили независимо, а последовательности одинаковых значений схлопывали.

    Сильно упрощённый пример оптимизации хранения таблицы со зданиями:

    Пример оптимизированного хранения таблиц

    Нормализация позволяет уменьшить избыточность, но есть и негативная сторона — для формирования UI-элемента для какого-то объекта приходится делать несколько запросов, обращающихся к большому количеству таблиц. Впрочем, в то время эти таблицы использовались не только для получения данных для отображения, а практически для всех задач, включая поиск по тексту и различные типы поиска проезда. Для всех этих задач нормализованные данные как раз позволяли уменьшить количество обрабатываемой информации.

    Данные для отрисовки карты уже тогда имели собственный бинарный формат и хранились в отдельном блоке. Постепенно мы сделали отдельные бинарные форматы для ускорения поиска проезда и поиска по тексту. В базе данных осталась только информация, которая использовалась для отображения карточек объектов, а также для связей одних объектов с другими.

    Карточки и связи

    Упрощаем работу


    Как можно упростить работу с данными? Получать разом все данные, необходимые для отрисовки карточки, по идентификатору объекта. Поскольку онлайн-версия и так получает от API все данные за один запрос в формате JSON, можно заодно и объединить форматы, используемые всеми нашими продуктами.

    И json’ы для отображения карточек, и связи нужно получать для ограниченного количества объектов, от силы нескольких десятков за раз. Но существуют сценарии, где отдельные атрибуты нужно получать разом для больших выборок, вплоть до сотни тысяч. Такие атрибуты логичнее выделить в отдельную сущность с отдельным форматом хранения — свойства. Свойства могут иметь тип и храниться более эффективно в бинарном формате.

    Наивный подход хранения json’ов — использование key-value базы данных. Возьмём для примера Москву, как самый большой из наших проектов. Даже в максимально простом виде — для каждого объекта хранится сам json, 8 байт идентификатора и символ-разделитель — справочник займёт 1,9 ГиБ. Полученный размер почти в шесть раз больше, чем у предыдущего описанного варианта, и это ещё без связей и свойств.

    Мы специально раздули объекты, засунув в них информацию обо всём, что может понадобиться для отображения их карточек, а ведь ещё необходимо хранить имена полей, кавычки, запятые и скобки.

    Сжимаем данные


    Нормализация — не единственный способ устранения избыточности. Второй популярный способ — сжатие. lzma-архив нашего невероятно толстого файла занимает всего 55 МиБ.

    Конечно, использовать напрямую такой формат мы не можем, так как для доступа к произвольному объекту нужно распаковать все данные, хранящиеся раньше, да и lzma-архивы распаковываются не сильно быстро.

    Как нам получить с одной стороны быстрый произвольный доступ, а с другой — при помощи сжатия данных уменьшить размер требуемого места? Ответ — использовать постраничное разбиение.

    Формат бинарного хранилища

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

    В таком формате хранятся все данные — json’ы, связи и свойства. Осталось связать эти данные с идентификаторами объектов. Для каждого идентификатора нам нужно хранить одну или несколько пар <номер хранилища, номер данных в хранилище>.

    Упрощённый формат связей идентификатора объекта и данных в хранилищах
    Все порядковые номера, смещения и размеры хранятся в сжатом формате, похожем на UTF-8, где маленькие значения занимают всего один байт. Это позволяет нам уменьшить размер ссылок, просто отсортировав содержимое бинарных хранилищ по уменьшению частоты встречаемости.

    Сортировка и уменьшение размера

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

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

    Ускоряем поиск данных


    У описанного формата есть одна проблема. Чтобы найти номер объекта, хранящего индексы для указанного идентификатора, нам нужно прогнать бинарный поиск внутри данных первого объекта. Для этого нужно либо загрузить 10,9 МиБ в память, либо сделать 21 дополнительное чтение. Оба решения нам не подходят, а потому мы уменьшаем число чтений, храня данные в виде дерева.

    Формат дерева быстрого поиска данных по идентификатору

    Группируем данные по 32 объекта, а в промежуточных уровнях храним по 128 первых идентификаторов вложенных узлов. Мы добавили три уровня дерева и уменьшили количество дополнительных чтений до четырёх (а на самом деле, с учётом кэширования прочитанных ранее узлов дерева, даже до 1–3). Цена — чуть менее 400 КиБ.

    На данном этапе мы довольно эффективно храним связи и свойства, но json’ы занимают много места. Это понятно. Чем больше размер страницы, тем больше туда попадает объектов и тем лучше алгоритм сжатия способен определить, какая информация избыточна. Но, с другой стороны, тем больше работы нам нужно совершить, чтобы прочитать отдельный объект. Json’ы же — довольно большие объекты, а потому в одной странице их находится совсем немного. Следовательно, нужно помочь алгоритму лучше справляться со своей работой.

    Разбиваем json’ы на части


    Во-первых, многие объекты имеют совпадающие схемы данных, различаются только значения атрибутов. Во-вторых, многие значения атрибутов совпадают даже у объектов с разными схемами. Выделим схемы и значения атрибутов в отдельные хранилища, а сами json’ы будем хранить в виде: ссылка на схему + ссылки на значения атрибутов.

    Разбиение json’а на схему и данные

    В нашей схеме данных количество названий атрибутов ограничено. Значит, мы можем вынести их в отдельный файл и вместо них хранить номер. Также сделаем ещё несколько изменений, попутно учитывая, что json’ы у нас всегда являются объектами.

    Реальный формат хранения схем json-объектов

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

    Устанавливаем размер страницы в 1 КиБ и оказывается, что пока мы оптимизировали формат так, чтобы, с одной стороны, чтение не было сильно медленным, а с другой — данные запаковывались максимально хорошо, мы… уже обошли «оптимизированные таблицы» и по размеру, и по удобству использования. Но не зря же всё это было! Максимальный выигрыш должен быть от сжатия значений атрибутов, свойств и схем. Натравливаем zlib и проверяем, что на фоне остальной работы чтение данных из базы занимает незначительное время. Удовлетворённые результатом, переключаемся на другие задачи.

    Избавляемся от ненужного


    Начинаем уменьшать с поиска данных, от которых можно избавиться. Оказывается, что за время существования формата мы научились обходиться без самой большой связи. Это 10% размера!

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

    Распределение пользователей по версиям
    Распределение пользователей по версиям

    В самом верху — распределение пользователей по последним версиям Android-приложения. Снизу — iOS.

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

    Также мы до сих пор выпускаем новые данные для замороженной версии под Windows Phone. И пусть пользователи WP8 составляют лишь малую долю от нашей аудитории, в абсолютных числах это почти 200 000 в месяц.

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

    Приятный бонус от проделанной работы — уменьшение размера ежемесячных обновлений, так как удалённая связь сильно изменялась от месяца к месяцу, раздувая размер diff’ов.

    Если посмотреть на оставшиеся данные, то суммарно можно выжать ещё те же 10%, однако цена будет несопоставимо больше. Пока решили не трогать.

    Оптимизируем текущий формат хранения


    Как было написано выше, мы делали страницы размером 1 КиБ и запаковывали не все бинарные хранилища.

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

    Следующий пункт — выбор оптимального размера страницы. Чем больше размер страницы, тем более эффективно сжимаются данные, но тем медленнее происходит выборка данных. И если с увеличением размера страницы расходы по времени и памяти растут линейно, то выигрыш становится всё менее заметным. После тестов решаем увеличить размер до 8 КиБ.

    Влияние размера страницы на большие выборки
    Если увеличение страницы ожидаемо замедляет маленькие выборки, то вот большие — от сотен элементов — при этом даже ускоряются. Это означает, что по-хорошему нужно выбирать разные размеры для хранилищ в зависимости от сценариев использования хранящихся в них данных.

    Суммарно только эти два пункта позволяют уменьшить базу на 18%!

    Меняем формат сжатия


    zlib, конечно, классика, но zstd обеспечивает большую скорость распаковки при большей же степени сжатия. Более того, zstd позволяет сначала построить единый словарь для всех имеющихся данных, а затем сохранить его один раз и сжать им все страницы. Таким образом, мы прилично замедляем процесс формирования файла с базой данных, но зато выжимаем дополнительные 8%.

    Добавляем подъезды


    Простой способ


    Самый простой способ — сделать каждый подъезд отдельным объектом, отдельно их индексировать (по грубым оценкам +10% размера индекса) и отдельно же в данных для отрисовки карты хранить их геометрию.

    Такой способ раздует базу суммарно на 3%. На предыдущих этапах мы выиграли более чем достаточно, чтобы успокоиться и работать с подъездами по привычной схеме, но… на момент старта работ мы не были в этом уверены, а работа над альтернативным форматом шла параллельно.

    Подробная оценка, для заинтересованных
    Попробуем оценить увеличение размера пакета с базой данных на каждый объект:

    8 байт — идентификатор,
    6 байт — номера используемых хранилищ (данные + пять свойств; свойства выделены из основных данных и хранятся в бинарном виде, так как часто нужны для большого числа объектов разом),
    3 байта — индекс в хранилище данных,
    2 байта — смещение данных объекта,
    5 байт — значения данных — 2 байта на схему, 3 байта в среднем на информацию о квартирах (считаем, что будет много повторяющихся и сами данные хранятся один раз),
    6 байт — смещения данных координат (остальные свойства имеют много повторяющихся значений и будут схлопнуты),
    8 байт — значения координат.

    Итого 38 байт на объект. В случае Москвы это 4,5 МиБ для более чем 124 тысяч собранных входов.

    Далее нам нужно хранить ещё и связь между домом и входами, это 2,5 байта на каждый жилой дом и 8 байт на каждый вход. Ещё 1 МиБ.

    Теперь считаем, сколько всё это займёт в карте.

    Во-первых, мы должны хранить геометрии. Для полилиний первая точка всегда занимает 8 байт, а все последующие хранятся в виде diff’ов нужной точности. Здесь нас устроит точность до дециметров. Большая часть входов состоит из двух точек, не сильно удалённых друг от друга, а потому можно считать, что сама геометрия будет занимать 10 байт. Итого 1,2 МиБ.

    Ещё нам нужно связать идентификатор входа и объект с его геометрией. Индекс — такое же бинарное хранилище, как и всё остальное, только в данных хранится назначение связи (1 байт), номер слоя (1 байт) и номер объекта (3 байта). Плюс по 8 байт на идентификатор, а также дерево быстрого поиска. Итого ещё 1,5 МиБ.

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

    10% индекса поиска — это 5,9 МиБ. Суммируя всё, получаем 14,2 МиБ, что как раз чуть больше 3%.

    Текущий вариант


    Вместо того, чтобы индексировать подъезды и раздувать поисковый индекс, мы ищем дома, но дополнительно размечаем слова запроса и выделяем из него адреса (актуально для поиска подъездов в Калининграде), подъезды и/или квартиры. Таким образом, на выходе у нас есть идентификатор дома и типизированные текстовые поля, по которым мы должны найти нужный нам подъезд.

    Примечание
    Это спорный пункт. С одной стороны он позволяет нам сократить размер базы, а с другой ставит ограничения на формат ввода — подъезды не будут находиться по многим запросам, которые были бы правильно обработаны при использовании честного поиска.

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

    Последнее стоит раскрыть подробнее.

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

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

    Центральные точки зданий у нас уже есть. Что, если для здания добавить новое свойство — его целочисленное «направление», а для каждого входа выделить ещё два — целочисленные смещения в дециметрах вдоль и перпендикулярно линии направления? Учитывая, как у нас хранятся json’ы с информацией, геометрия входа в среднем будет занимать чуть более двух байт.

    Дополнительный бонус — поскольку геометрия находится в справочнике, нам более не нужно хранить соответствие между идентификатором входа и номером объекта в слое карты.

    Минус — усложнился код. Ранее мы просто говорили карте «покажи такие-то объекты», а теперь при отображении входов добываем эти данные из json’а и добавляем на карту динамические объекты. Тут всё не сильно страшно. К моменту отображения стрелочек входов json’ы соответствующих объектов у нас уже есть, то есть нет необходимости дополнительно идти в базу. С отображаемыми точками подъездов всё несколько хуже — теперь нам приходится в фоне определять, какие дома видны, вытаскивать данные этих домов из базы данных, разбирать json’ы, и, если там есть входы, создавать для них динамические объекты.

    Примечание
    Неоднозначное решение. Даже с учётом всевозможных оптимизаций и довольно быстрой работы всё равно совершаем дополнительные действия, без которых можно было обойтись, увеличив размер базы на 0,2% (972 КиБ для Москвы).

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

    Сколько нам это дало? 3% превратились в 0,5%. Можно было бы ещё меньше, но мы оставили в данных идентификаторы (которые довольно плохо сжимаются), чтобы упростить обработку сообщений пользователей о неточных входах.

    Результат


    Мы добавили большое количество подъездов, при этом сократив размер файла с данными карты на 0,5% и уменьшив на 26,6% размер файла с данными справочника. Последний по-прежнему является самым большим из наших файлов, но он — лишь один из четырёх «тяжёлых» файлов, так что общее изменение получилось более скромным — 10,1%.

    Изменение размеров базы Москвы с течением времени

    Подъезды собраны пока не все. Размер баз со временем немного подрастёт (по текущей оценке та же Москва увеличится на 0,4%), но в любом случае цель выпустить подъезды, не увеличив размер, более чем достигнута.

    Что дальше?


    Если говорить о продуктовых доработках, то собираемся поддержать подъезды и квартиры в подсказках поиска, а также в поиске начальной и конечной точек поиска проезда. Также думаем о том, чтобы аналогично подъездам отображать важные входы в здания (в основном в торговых центрах).

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

    И, конечно, будем править ошибки, которых пока что имеется.

    One more thought: используйте JSON разумно


    Из написанного выше напрашивается вывод, что можно не сильно думать о бинарных форматах и просто использовать JSON. Это не совсем так. У нас это работает, так как единомоментно нам нужно получать от силы несколько десятков объектов. Плюс мы используем rapidjson, а он очень шустрый и потребляет мало памяти.

    Также стоит ограничивать передачу данных в формате JSON из C++ в UI, написанный на другом языке.

    Во-первых, вам придётся превратить его в строку.

    Во-вторых, парсеры, доступные из UI-части, будут повторно эту строку разбирать, и будут делать это заметно медленнее.

    Лучше самостоятельно доставать из JSON’а все данные, а на сторону UI прокидывать простые интерфейсы, адаптированные для отображения конкретных элементов.

    2ГИС

    350,00

    Карта города и справочник предприятий

    Поделиться публикацией

    Похожие публикации

    Комментарии 131
      +1
      Все порядковые номера, смещения и размеры хранятся в сжатом формате, похожем на UTF-8

      Это называется varint
        +1
        Я привык, что variant'ом называется тип, который может хранить любые данные. Здесь же речь идёт о хранении целых чисел переменной длины, где в первом байте содержится информация о количестве используемых байт.
      +5
      Всегда было интересно, как вы выдерживаете конкуренцию с Яндексом. Они тоже недавно подъезды добавили. За счёт чего вы выживаете и развиваетесь?
        +16
        Я использую из-за offline и более точной базы по организациям.
          +16
          Большей частью, конечно, за счёт рекламы. Во многом — благодаря очень хорошо работающему отделу продаж. Помимо этого продаём картографические и справочные данные, отрисовываем территории по заказ и делаем различные сервисы, так или иначе построенные вокруг имеющихся у нас данных.
          Во многом выдерживать конкуренцию помогают высокие требования к качеству данных. Так, мы данные собираем сами, а не силами пользователей. Качество тех же подъездов, я думаю, в итоге будет сопоставимым, но скорость сбора прилично различается. Что касается информации об организациях, то пока что у нас лучшая база, но в течение ближайших лет разрыв будет сокращаться, всё больше будут влиять привычки пользователей, дизайн, удобство…
          • НЛО прилетело и опубликовало эту надпись здесь
            +1
            В Украине у 2gis конкуренции в лице яндекса нет — яндекс заблокирован. Хотя и до блокировки яндекс в Украине не был распространён.
              –2
              Вообще, Яндекс сам картографическую информацию не производит. Он закупает карты у ООО «Резидент» resident.ru/data/default.htm у которого карты закупают и другие сервисы resident.ru/projects/default.htm. Соответственно, Яндекс и другие системы реализуют свои поисково-информационные системы поверх готовой картографической информации.
                0
                Это, с точки зрения юзера, значения не имеет. Прогноз погоды они тоже не сами составляют.
                  0
                  С точки зрения юзера обновление карт появится во всех производных сервисах.
                  0

                  Зачем вы пишете откровенно ложную информацию? Яндекс сам производит картографическую информацию.

                    0
                    Пруф: resident.ru/projects/2012.html
                    «Поставка и подготовка картографических наборов данных для проекта Яндекс.Карты. „
                  0
                  в Нске ДубльГИС точнее (по привычке называю его все еще так), в остальных местах привычнее.
                  до последнего времени у 2ГИС было преимущество перед Яндексом, а именно ПК версия, которую они по-тихому сняли с поддержки. у меня на двух ПК в какой-то момент карты перестали обновляться, в процессе общения с техподдержкой я был ненавязчиво послан на хутор онлайн-версию.
                  на данный момент этого преимущества нет.
                    0
                    ПК-версия действительно уже не поддерживается, но новые данные выпускаются до сих пор. Серверы обновлений для ПК-версии тоже в строю и стабильно работают.
                    Я могу попробовать помочь. Перешлите, если не сложно, историю вашего общения с техподдержкой мне в личку.
                      +1
                      уже таки сложно, это было в октябре-ноябре, я забил, снес оффлайн версию с трех ПК и пользуюсь онлайн.
                      из того, что помню — при загрузке очередного обновления базы и попытке его установки выдавало ошибку, если база была размером больше какого-то определенного. т.е. Абакан я мог обновить, а Новосибирск — уже нет.
                      мне оффлайн на ПК был актуален, пока катался по всей Сибири по работе. на данный момент работа уже другая.
                        0
                        Почему не поддерживается? Это же конкурентное преимущество, работает такая карта быстрее и плавнее всех. Плюс не всегда есть инет, а планировать, звонить в организации и строить маршрут нужно. Еще бы в нее добавили API для всех, то цены бы не было.
                          +3
                          Сразу оговорюсь — причин много, они многократно проверены, но описать их все кратко не получится, нужна отдельная статья. Я коснусь только некоторых аспектов.

                          На момент принятия решения аудитория ПК-версии стагнировала, в то время как и онлайн, и мобильная версия показывали стабильный рост. Это можно воспринимать как косвенное подтверждение того, что ПК-версия в таком виде рынку не нужна.

                          После прекращения поддержки мы ожидали быстрого падения числа пользователей, но ошиблись — падение было, но не такое быстрое. Заинтересовавшись этим фактом, мы провели детальный и массовый опрос пользователей. Оказалось, что причины использования в основном попадают в две категории:
                          — пользователи не готовы пользоваться онлайн-версией из-за определённых недоработок
                          — ПК-версия используется для бизнеса
                          Есть, конечно, небольшие группы, которые стоят особняком. Например, люди, принципиально отказывающиеся пользоваться браузерами и смартфонами.

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

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

                          Сейчас для оффлайн-сценариев у нас есть мобильная версия. Она позволяет делать то, что вы описали — планировать (с использованием подборок в избранном), звонить, искать проезд.

                          Что касается API, то в ПК-версии он есть, открытый, только им никто не пользуется. А вот WebAPI как раз зашёл гораздо лучше. И, если справочное API мы подключаем по договорённости, то картографическое API открыто для всех.
                            0
                            Я пользуюсь ПК-версией только если нет интернета.
                            В остальное время сайтом, т.к. ПК-версия у меня долго запускается. Открыть браузер и перейти на сайт получается быстрее.
                              0
                              Мне вот одно интересно, а почему бы не выпускать новые версии на ПК на той же основе что и мобильные?
                              Вроде даже уже и бету выпускали а потом всё прекратилось.
                              И да, на предприятиях, где на доступ в интернет есть разнообразные ограничения оффлайн версия решает много проблем.
                                0
                                Трудности обновления рекламы на ПК
                                  0
                                  С этим как раз проблем нет. Что-то можно обновлять вместе с базами, что-то — делать доступным только в онлайне. Какие-то совсем простые вещи можно загружать независимыми маленькими файлами.
                                  0
                                  Бета была не на основе мобилки, а на основе онлайн-версии. Ретроспективно — это была большая ошибка. Впрочем, прекратили её развивать не из-за этого, а как раз по тому ряду причин, часть из которых я привёл выше.

                                  Выпустить ПК-версию на той же основе, что и мобильную, не так просто.
                                  Большой экран предъявляет совершенно другие требования к UI, т.к. сценарии пользователей сильно отличаются.
                                  Нужно поддержать способы обновления приложения, принятые на указанной ОС. В случае Mac OS — собрать пакет, в случае Linux — собрать целую пачку пакетов под распространённые ОС либо думать о переносимых приложениях, но там всё ещё веселее. В случае Windows так и вовсе писать сервис обновлений, который самостоятельно будет загружать и устанавливать msi новых версий.
                                  Нужно поддержать совершенно другие сценарии доступа к данным. Так, пользователи ПК-версии любили работать с разных компьютеров с переносимой версией, находящейся на сетевом диске.
                                  Обязательно не забыть про печать. И это совсем не то же самое, нежели доработки стилей в онлайн-версии для печати в браузере.
                                  И много, много, много другого. Каждый такой пункт может казаться не сильно сложным, но сумма получается значительной.
                                    0
                                    Понятно.
                                    Не сказать что к UI на Win ПК есть какие то серьёзные требования сверх того что уже реализовано в онлайн версии.
                                    Разве что не нравится что в онлайн версии поворота нет.
                                    Про любовь работать с сетевого диска, как один из админов крупного Новосибирского предприятия с 400+ компов — Любим. Работаем. По причине разнообразных ограничений интернета проще на одном из мелких серверов иметь такую версию, чем каждый раз бегать к желающим заиметь свежую оффлайн версию.
                              0
                              А в чем заключается неподдержка ПК-версии?
                              Сейчас посмотрел — она у меня обновлена до июня 2018…
                              Все прекрасно работает… Вообще, хочу выразить вам свою благодарность за качественный продукт! Сколько раз он уже выручал, со счета сбился… Респект!!!
                              На самом деле у нас считанное количество продуктов, по поводу которых гордишься, что это сделано в России...2ГИС из этого числа…
                                0
                                Не выпускаются обновления программы, не добавляются новые возможности. Те же подъезды в ПК-версию не попадут. Базы — да, до сих пор выпускаются, и прекращать пока не планируем.
                            +2
                            Здесь, за Мкадом, Яндекс полтора года не мог отрисовать мой дом, который был вполне себе законченной новостройкой в новом популярном микрорайоне.

                            В то время как Дублик даже все пешеходные дорожки показал в округе и новые магазинчики и пивнушки, которые открываются как грибы после дождя.
                            Перекрытия дорог и путей также отображаются оперативно, потому что база своя, а не покупная, как у Яндекса — пока не пнёшь не обновят.

                            Я не скажу, что все решения ДубльГиса мне нравятся — так, например, они предлагают «задавайте запросы простыми фразами» но до сих пор может перепутать название компании с улицей и не найти ни того ни другого.

                            Но внешний вид карт у них гораздо круче яндексовского и гугловского, это вообще бесспорно.
                              0
                              Не знаю как с яндексом сейчас, но в 2гис, если не ошибаюсь, появились первые пешеходные маршруты. С тех пор из-за этого и пользуюсь.
                                +1

                                Могу сказать про Бишкек: актуальность данных, оперативность обновления и удобство использования у 2гис существенно выше, чем у Яндекса, Гугла и прочих картографических и справочных сервисов. Еще бы навигатор доделать и вообще была бы красота!

                                +1
                                Спасибо, очень интересно!
                                  +3
                                  Вам спасибо! Положительные отзывы очень помогают что-либо делать. Всегда приятно, когда кому-то интересно или полезно.
                                  –3
                                  Интересный квест. Можно ли перейти на YAML, сколько выйграете?
                                    +4
                                    Данные в YAML без дополнительной обработки будут занимать те же гигабайты. Если же применить ту же магию, то, думаю, то на то и выйдет.
                                    –1
                                    Небольшой оффтоп. Просто предложение закинуть. А можно как-то сделать чтобы не надо было вручную переключать загруженные города в приложении на iOS? У вас же все равно есть доступ к геолокации. Как мысли вслух, в идеале вообще хотелось бы онлайн режим без загрузки городов.
                                      +1
                                      Если приложению разрешён доступ к геопозиции, то по нажатию кнопки «Где я?» (со стрелкой) откроется город, в котором вы находитесь.
                                      Про онлайн-режим думаем, но пока ничего конкретного пообещать не могу.
                                        0
                                        А где эта кнопка? Открываю 2 гис. Там поле ввода «Поиск в Москве», места, проезд и кнопка а-б?
                                          +2
                                          Смахните панель вниз, появится в нижнем углу над кнопкой А/Б.
                                      0
                                      Пример питерской нумерации, подъездов и квартир, конечно, поражает
                                        +1
                                        Это вы ещё в Японии не были! Там система вообще инопланетная
                                          +1
                                          Можете рассказать?
                                            +1
                                              0
                                              В Дубае, несмотря на наличие улиц и номеров домов, принято дома искать по геокоординатам, записанным специфическим образом: go.2gis.com/71ujn
                                                0
                                                Решил посмотреть и нашел баг. У меня браузер Safari, Version 11.0 (13604.1.38.1.6). Без плагинов. Ось Sierra, 10.13. Пытаюсь сделать зум, чуть проведешь пальцем по сенсору Magic Mouse — зум «прыгает», то больше то меньше, сначала увеличивается, потом уменьшается скачком (особенно видно на тех территориях, где еще нет карт), или зумит сразу на несколько (2-3) ступеньки.
                                                  0
                                                  Передал информацию команде онлайн-версии.
                                                0
                                                Да, японцы странные во всём
                                                0
                                                Если очень кратко — то вот
                                                  0
                                                  Интересно, у них не возникало желания перейти на более простую и понятную адресацию?
                                                    0
                                                    Там очень сильно любят традиции
                                            +1

                                            для питера будет поддержка "парадных"?! :)

                                              +2
                                              Ну и чёрных ходов тогда уж.
                                                +2
                                                А ещё существуют входы в подвалы!
                                                +2
                                                Кстати, да, было бы прикольно для них показывать «парадные» )
                                                  +4
                                                  Если в Петербурге вместо «подъезд» писать «парадная», то тоже будет неправильно. Есть ещё лестницы, а в новых домах — именно что подъезды. Получается, нужно собирать дополнительный признак.
                                                  Мы общались с довольно большим количеством как коренных жителей, так и приезжих из других регионов. По их словам слова «подъезд» и «парадная» нынче взаимозаменяемы, практически никто не отслеживает, где какой тип входа. Дополнительно мы смотрели на продукты конкурентов, и у них тоже нет отдельных лестниц и парадных. Исходя из всего этого решили не усложнять работу специалистов.
                                                    0

                                                    к сожалению подобное изменение в перспективе 10+ лет вполне может убрать слово "парадная" из языка. кроме отображения адреса есть еще и поиск по нему, почему бы не добавить маленькую — но прикольную фишечку именно в поиск? а можно узнать критерий по которому определялся "коренной житель"? я встревал людей которые считали себя такими после 2х лет проживания в городе.

                                                      +2
                                                      В данном случае я имел в виду родившихся в городе и проживающих там на данный момент.
                                                      Именно в поиске можно заменить слово «подъезд» на «парадная» — нужный объект всё равно будет найден.
                                                        0

                                                        спасибо за ответ

                                                        0
                                                        Это слово может уйти и без подобных изменений. Много вы видите парадных в домах новой застройки? :)
                                                          0
                                                          Парадных много (в том числе с консьержами, холлами и цветами), а вот черных ходов практически нет.
                                                        0
                                                        Ну здрасти. Если в подъезд два входа, то один из них парадный, а второй черный. Парадный — тот, что с улицы, а черный — со двора. У вас в этйо же статье такие примеры есть.
                                                          0
                                                          А если 3 входа, то третий как назвать? Давайте сразу «любовный» — для любовниц и любовников!
                                                            0
                                                            Ну были господа и чернь, так что вход или господский, парадный, или для обслуги — черный. Парадный вел в залы, а черный — в кухни и к кладовкам.

                                                            Поймите вы простую вещь: черный ход изначально — это такая смесь мусоропровода с угольным лифтом. Он вел в кухню. А в нормальной господской квартире до кухни — удобнее всего на самокате ездить, ибо анфилада комнат длинная, а кухня — в конце. Кстати и ездят, реально видел такое на Кронверском 23.

                                                            Третий вариант будет, когда появятся разумные роботы.

                                                            Проститутки шли соответственно социальному положению — господские через парадную, а любовницы обслуги — через черный ход.
                                                      0
                                                      При выборе магазинов в ТЦ (Метрополис, Атриум) почему то предлагает всегда один единственный вход, не оптимальный с точки зрения расположения магазина.
                                                        0
                                                        О таких случаях можно сообщать из приложения: в самом низу карточки есть кнопка «Нашли ошибку в данных?». Затем можно выбрать «Неправильно указан вход», «Указать вход на карте» и выбрать более оптимальный.
                                                          0
                                                          Для каждого магазина, на каждом этаже? :)
                                                          Просто я думал, что вход должен браться алгоритмически, ближайший к магазину.
                                                            0
                                                            Нет, конечно, для каждого магазина не нужно. В таком случае лучше не указывать на карте, а описать проблему в текстовом поле.
                                                            Для того, чтобы находить ближайший вход алгоритмически (а лучше — вообще все подходящие входы), нужно иметь план здания, иначе будет много ошибок. Планы каких-то зданий (крупные ТЦ, аэропорты, вокзалы) у нас есть, но их ещё слишком мало, чтобы думать об автоматизации.
                                                              0
                                                              Я как раз написал примеры ТЦ (мск Метрополис, Атриум), где есть замечательные планы зданий.
                                                              Если кликнуть по ТЦ показываются все входы, если кликнуть по определенному магазину, то показывается всегда один и тот же, не зависимо от расстояния между входом в зданием и расположением магазина (android, последняя версия).
                                                                0
                                                                Да, возможно, там, где планы уже есть, можно было бы и автоматизировать. Я передам предложение, как и информацию о проблеме с этими двумя ТЦ.
                                                                  0
                                                                  Спасибо. А нет в планах сделать навигацию внутри ТЦ? Например в том же Атриум, уже несколько лет висят bluetooth iBeacon.
                                                                    +1
                                                                    Думали, но в ближайших планах точно нет.
                                                                    0
                                                                    Вот кстати реальный пример поиска маршрута до магазина в ТЦ Атриум от станции метро go.2gis.com/g0bdl — все равно пытается вести в тот самый «единственный» вход в ТЦ и уже оттуда ведет в магазин.
                                                              –7

                                                              На что только не идут организации, чтобы не обновлять openstreetmap, а плодить у себя в своем уголке правки карт.

                                                                +8
                                                                Справедливости ради, OSM появился позже 2ГИС, да и популярным стал не сразу. Возможно, начиная заниматься картографическим бизнесом сегодня, проще всего было бы работать на основе данных сообщества. В этом случае резонно и все правки делать в первоисточнике. У нас другая история — уже давно созданы свои удобные инструменты для работы с картой и справочником, используются свои форматы данных.
                                                                Мы используем OSM-данные, но только там, где нет своих — за пределами городов. В случае организаций и входов все данные собраны нами, поэтому и правки вносятся только в нашу базу.
                                                                  –1
                                                                  Спасибо, за разьяснение. Как вы возвращаете правки пользователей для данных OSM?
                                                                    0
                                                                    OSM-данные сейчас используются для отрисовки территорий между нашими проектами, но там ничего нельзя выбрать, соответственно, нельзя и отправить обратную связь. Когда начнём работать с ними более плотно, тогда и вопрос будет более остро стоять.
                                                                      0
                                                                      Как вы возвращаете правки пользователей для данных OSM?


                                                                      А обязаны ли они это делать?
                                                              0
                                                              Подъезды это лютость вообще. Существуют дома-многоэтажки, куда можно зайти в один подъезд, подняться на этаж этак седьмой, а потом через хлипенькую дверь просочиться в другой подъезд. И нет, не по галерее — это именно какая-то междуподъездная дверь.
                                                                0
                                                                А ещё есть отдельные входы к лифту и к лестнице. Иногда бывают отдельные входы в одну-две квартиры, которые при этом не участвуют в подсчёте количества подъездов. Или многоквартирные подъезды без номеров, иногда — в том же здании, где есть и подъезды с номером.
                                                                При разработке формата мы пытались учесть все возможные варианты и просили коллег подкидывать нам интересных примеров.
                                                                  +1
                                                                  В Москве есть дом, где два подъезда обслуживает крохотный лифт на 1,5 человека. Проход между подъездами через кабину лифта.
                                                                    0
                                                                    Отличный пример!
                                                                    Можете адрес сказать?
                                                                      0
                                                                      Ответил в личку.
                                                                  0
                                                                  Более того, zstd позволяет сначала построить единый словарь для всех имеющихся данных, а затем сохранить его один раз и сжать им все страницы.
                                                                  Справедливости ради, zlib так тоже умеет. См. inflateSetDictionary/deflateSetDictionary.
                                                                    0
                                                                    Промахнулся и ответил ниже :)
                                                                    0
                                                                    Действительно, спасибо. Единственное, что, похоже, из коробки нет метода для вычисления оптимального словаря, и его нужно формировать внешними утилитами.
                                                                      +2
                                                                      У нас в моем родном городе есть общаги, у которых внутри было три-четыре разных способа нумерации квартир, и при двух подъездах можно было на одном этаже попасть в любую квартиру этажа (то есть из него было доступно два подъезда), а на другом — только в часть.
                                                                      Сами жители не знали, какой номер у соседей (да и не всегда понимали, какой у них).

                                                                      Найти квартиру абонента без него самого было нереально.
                                                                      PS. Спасибо за поддержку WP до сих пор! Один из ваших пользователей.
                                                                        +1
                                                                        Пожалуйста! Меня самого радует, что мы ещё поддерживаем WP — у мамы Lumia, и она вполне нормально справляется со всем, что нужно.
                                                                        0
                                                                        Сокращение объёма на 10%, это конечно хорошо. Только нельзя ли для Андроида добавить функцию переноса приложения на SD-карту? Пришлось отказаться от множества полезных программ только потому, что они забили основную память устройства.
                                                                          +1
                                                                          Коллеги из команды разработки под Android подсказывают, что наше приложение всегда можно было переносить на SD-карту. Требование одно — чтобы версия ОС поддерживала такую возможность.
                                                                          Данные тоже можно переносить на SD-карту, даже если само приложение находится на внутренней памяти. Это уже делается из настроек внутри приложения.
                                                                            +1
                                                                            А как именно это делается можете подсказать?
                                                                              0
                                                                              Перенос на SD-память доступен из страницы приложения в системных настройках, названия пунктов и кнопок зависят от версии ОС. На случайно взятом тестовом устройстве это «Менеджер приложений» => «2ГИС». На этой странице (сразу на ней или в одном из подпунктов, тоже может различаться) должна быть кнопка «На карту памяти SD».
                                                                              Перенос городов: внутри приложения в левом меню выбираем «Настройки» => «Дополнительно» => «Место хранения городов».
                                                                          0
                                                                          Интересно, как бы вы реализовывали карты для Японии? Там нет названий улиц. Ну, почти.
                                                                          Кстати да, не хватало мне 2Гис в Токио…
                                                                            +1
                                                                            Если у дома есть отдельный уникальный адрес, то никакой проблемы для поиска нет. У нас нет требования на обязательное наличие чего-либо, т.к. даже в России встречаются адреса не просто без улиц, а даже без населённых пунктов.
                                                                              0
                                                                              встречаются адреса не просто без улиц, а даже без населённых пунктов.


                                                                              Это как? Любопытно. Вообще, запилили бы статью про самые безумные адреса :)
                                                                              0
                                                                              На родине предков улиц и номеров домов не было, адрес звучал, как деревня такая-то и фамилия хозяина. Улицы и нумерация домов появились недавно, лет 10 назад, с появлением дачников.
                                                                                0
                                                                                В этом смысле «деревня такая-то, фамилия» для нас и является уникальным адресом.

                                                                                В деревне, где ранее проживали мои родственники, тоже никаких улиц не было, номера на домах не висели, на почтовых ящиках были фамилии, а в письмах просто указывалось ФИО, но… в официальных документах всё было пронумеровано ещё с советских времён.
                                                                            +2
                                                                            А не планируется ли API человеческий, с понятным и прозрачным ценообразованием?
                                                                              +4
                                                                              По крайней мере на Andoid иногда замечаю, что скачивание новой версии города, установленного ранее, для последующего обновления начинается автоматически без подтверждения пользователем, что не всегда удобно. Открываешь карту, чтобы быстро что-то уточнить, а из-за скачивания навигация по карте подтормаживает. Хорошо было бы добавить опцию с радиокнопками «Скачивать и обновлять автоматически», «Скачивать автоматически, обновлять вручную», «Скачивать и обновлять только вручную», чтобы у пользователя был выбор.
                                                                                +1
                                                                                Больше проблем, когда обновляешь приложение дома, едешь в город, открываешь 2гис чтобы быстро посмотреть куда идти, а 2гис говорит что карты города нет и нужно её скачать заново.

                                                                                И вместо того, чтобы посмотреть куда идти приходится ждать пока загрузится карта, тратя мобильный интернет. Или просто начинаешь пользоваться приложением с другими картами
                                                                                  0
                                                                                  Обратная совместимость поддерживается очень долго, так что новые версии приложения умеют открывать базы даже довольно старых версий.
                                                                                  К сожалению, у нас есть ошибка, в редких случаях приводящая к пропаданию городов. Мы уже разобрались в её причинах, обязательно поправим.
                                                                                    0
                                                                                    Я уже отправлял вам описание этого бага в марте 2016 года, на что мне ответили, что проблема в новой версии уже исправлена:



                                                                                    Как видно по моему текущему комментарию — не исправлена до сих пор.
                                                                                      +1
                                                                                      Увы, так бывает. Тогда мы нашли другую ошибку и поправили. Думали, что именно она и была причиной. Оказалось, что нет. Потом нашли и поправили ещё одну.
                                                                                      С каждым разом частота снижалась, но проблема всё ещё с нами. Я очень надеюсь, что это действительно последний раз, но, понятно, что-либо гарантировать сложно.
                                                                                  0
                                                                                  Какое-то время назад мы запретили автообновление во время работы приложения, теперь тормозить работу не должно. Также в современных версиях ОС система сама решает, когда нашему приложению можно будет загрузить обновления данных. Чаще всего это происходит ночью, когда телефон находится на зарядке.
                                                                                  0
                                                                                  Есть ли возможность отображать результаты нескольких поисков?
                                                                                  Например, мне нужно зайти в организацию А, а потом в «пятерочку», но, вот незадача, обнаружилось, что нужно посетить банкомат. Как все это увидеть на одном экране и спланировать?
                                                                                    0
                                                                                    Мы думаем как о текстовом поиске в режиме навигации, так и о добавлении промежуточных точек. Кажется, это как раз позволит более эффективно решать сценарии, подобные вашему.

                                                                                    Ещё один способ, который работает уже сейчас — добавление интересующих объектов в избранное, например, в подборку «Планы на сегодня». Чтобы не путать с остальным избранным, можно не включать отображение её элементов на карте, а просто зайти в подборку в нужный момент. Тут у нас была идея сделать возможность выбора различных значков для различных подборок, чтобы на карте чётко разделялись элементы разных списков.

                                                                                    Как вариант, после добавления разных значков, можно подумать и о действии, которое будет превращать поисковую выдачу в подборку. Как раз получится ровно то, что нужно.
                                                                                    0
                                                                                    В нашем городе как-то принято слева-направо подъезды считать.
                                                                                    Но я не в Питере живу)
                                                                                      0
                                                                                      Больше всего мне интересно как проводится топография? специально обученные люди бродят по миру и вносят данные в базу?
                                                                                        +2
                                                                                        Первоначальная отрисовка новых территорий производится на основе закупленных космоснимков, выверка — да, специалисты перемещаются по городу и вносят правки в мобильном приложении.
                                                                                        0
                                                                                        Оффтоп, не знаю куда направить запрос на фичу. Приложением пользуюсь почти всегда вне дома (и без доступа к WiFi в частности). В момент использования предлагается обновить город. Игнорирую, нахожу нужное, до появления WiFi забываю. Было бы неплохо, если бы при появлении WiFi было уведомление, самопроизвольное обновление или <другая опция>.
                                                                                          0
                                                                                          Свежие версии ОС Android сами решают, когда приложению можно будет загрузить обновление данных. Обычно это происходит ночью, когда телефон на зарядке.
                                                                                          На телефонах некоторых вендоров есть дополнительный параметр, который запрещает приложению запускаться автоматически. По умолчанию он включен, а приложение даже не может узнать о его наличии. В этом случае можно зайти на страницу приложения в системных настройках и явно разрешить автозапуск.

                                                                                          Если же речь про iOS, то там мы можем только сказать системе, какие файлы нам нужно загрузить. Система сама решит, какое время ей для этого более всего подходит. Проблема тут в том, что после загрузки файлов нам нужно сделать постобработку, и обычно она осуществляется после очередного запуска приложения.
                                                                                          +2
                                                                                          QtRoS, из личного опыта: слать фичи — бесполезно, если даже очевидные косяки по пол года закрыть не могут. Я предлагал исправления и фичи раз пять, не меньше. Отписка стандартная: «возможно, в ближайшем будущем». Три года назад, два года назад, год назад… Россия 2018 — будущее не наступило. Такие упорные ребята, упираются и упираются против клиентов.

                                                                                          Кажется, нынче в разработке модно терять пользователей из-за недоработанных фич. Примеров полно: убитый Пуск в Windows 8, недобитый No Man Sky, адская Agony, не запускающийся уже два года из-за кривого античита Warface (хотя Armata бегает на ура), жуткий рассинхрон календаря у Apple… да блин, половина крупных разработчиков софта этим страдает. О чём это говорит? О недостаточно отлаженных процессах, об отсутствии экспертного сообщества, связи и вменяемой поддержки пользователей, что программисты зашиваются, не успевая тестировать обновления…
                                                                                          И докажите, что не так. Что ни обновление — матерюсь, как сапожник, и шлю гневные письма. Но — бесполезно.

                                                                                          Зато — ПОДЪЕЗДЫ! Ок, ладно, это полезно… вот только толку нет, если 2ГИС их нормально не находит (даже если ввести подсказку из строки поиска!). Очередная фича из разряда «выпустим — юзеры потестят — баги пофиксим». Параллельно внесли какие-то мелкие изменения в интерфейс, из-за чего на айпаде работать стало в два раза сложнее. Ощущение, что они свои продукты сами «в поле» не тестируют. А самое обидное, что в теории потенциал хороший, но всё портит косая реализация.

                                                                                          Справедливости ради, сам работаю в очень крупной компании, выпускающей очень старый и широко распространённый, но активно развивающийся продукт, в котором где все проблемы решаются НУ ОЧЕНЬ ОПЕРАТИВНО, над каждым клиентом буквально трясутся (по себе сужу), а глючный код исправляется буквально за дни. Предложенные мной небольшие фичи в своё время внедрили за пару месяцев, при плановом выпуске обновления. Есть с чем сравнивать. До 2ГИС в этом плане очень долго доходит, что «Хьюстон, у вас проблемы».

                                                                                          Вот несколько примеров:
                                                                                          1) С новой версией карт поиск, как и было подмечено в статье, не работет так, как должен: ввожу улицу, дом, номер квартиры — ничего не находит. Пару раз посылал меня вообще в другую сторону дома, где и подъездов-то нет. И? Какой смысл? Может, через месяц всё поправили, но впечатление от функции испорчено и я успел благополучно её забыть. Момент утерян.

                                                                                          2) Уже второй раз за два года: косяк с гипер-чувствительностью к касаниям. На айпаде чуть коснёшься двумя пальцами — вместо масштабирования поворачивает карту. И отключить никак. По компасу не понять, где верх, где низ, пару раз сломал себе мозг. Крутит, промахивается, сбивает точки маршрута легким прикосновением. Я-то потерплю, а глупый джамшут в гуглояндекс убежит.

                                                                                          3) Требовать регистрации через аккаунты соцсетей, и не давать регистрироваться через почту, а без регистрации половина возможностей не работает. В чём прикол — не понял, но для корпоративного продукта это очень странный подход и неуважение к пользователям. Допустим (что недалеко от истины), у меня компания с сотней джамшутов (ок, будем честными — тремя сотнями) с китайфонами. И, внимание: я НЕ МОГУ их зарегистрировать, не зарегив перед этим на каждого почту, на почту — твиттер, а на твиттер — 2ГИС. Кстати, привязка чисто российского продукта к забугорным сервисам вообще выглядит безумием, с учётом нынешней ситуации с блокировками. Лично я, О ЧУДО, не пользуюсь твиттером и фейсбуком, а личные ВК и гуглопочту (на которую завязаны девайсы) не хочу сдавать куда попало, и своим джамшутам не посоветую. Уверен, половина из них даже не знает, что такое 2ГИС, из-за такой вот ерунды.
                                                                                          Техподдержка меня с этим вопросом мягко послала. Я не понимаю, что в голове у руководителей 2 ГИС, серьёзно. А хотелось бы.

                                                                                          4) Тормоза. Дикие. Может, на «яТелефон Х» и не заметно, но на айпаде эйр — очень даже, а на более чем двухлетнем HTC (не самом слабом среди стандартных джамшутофонов) последнее обновление просто насмерть убило юзабилити: пока запустишь (секунд 10, Asphalt 8 столько грузится), пока себя ручками найдёшь (не везде есть интернет, а GPS безбожно жрёт батарейку), пока маршрут построишь — автобус уже уехал. Весело! Наверное. Особенно прикольно, когда на улице минус 20, а следующий автобус из замкадья в нужную сторону через 20 минут. Да даже трамваи иногда так редко ходят, что подгорает/подмерзает. Мне интересно, какие рабочие кейсы в головах разработчиков?

                                                                                          5) Важные кнопки вдруг переехали, ушли в подменю, какой-то функционал вообще исчез без всякой логики. На айпаде вместо галочки (справа внизу) появилась кнопка «Готово» (наверху), хотя ВСЕ остальные кнопки внизу. Внизу жму «Построить маршрут», поле ввода прыгает наверх, щелкаю на него (зачем?!), ввожу с клавиатуры внизу, подтверждаю наверху справа, выбираю точку Б слева и заново… ничего не сделал, а уже задолбался.
                                                                                          Почему нижняя панель с информацией в альбомном режиме вдруг перестала выдвигаться, занимая или весь экран, или вообще исчезая, а в книжном — всё ОК? Может, это дизайнеры так сигналят, что их держат в подвале на цепи?
                                                                                          Зато кнопку очистки маршрута и нормальное сохранение истории маршрутов, как в старых версиях, добавить не могут. Видимо, это принципиальное.

                                                                                          6) Алгоримы поиска пути — это нечто. Разница в 10 метров между точками отправки может быть разницей между «есть 5 маршрутов» и «вы останетесь здесь навечно». Про то, каким диким способом подсчитывается приоритет нескольких маршрутов — я промолчу. Маршрут, состоящий из более чем двух точек посадки-высадки, можно построить разве что для метро, иначе рискуете уехать на электричке, когда прямо перед вами стоит прямой автобус (вот честно, вклинивать электричку в маршрут внутри МКАД — это треш). Алгоритм не учитывает направление поездки и стоянки автобусов, и не предлагает пройти до соседней остановки 2-3 минуты и сэкономить 10-15, потому что автобус после разворота стоит на станции.

                                                                                          7) Алгоритмы поиска по адресам — треш.
                                                                                          Ввожу: Дмитровка 2. Первые 4 варианта: дмитровка 23 (чеховский район), дмитровка 27, 25 (дмитровский район), и наконец — алилуйя — Дмитровка 2 в Москве. Фейспалм.
                                                                                          Ввожу: Дмитровак 2. В списке выпадают: Димитрова 2, 26, 24, большая якиманка, ТЦ Гименей и прочая… Жму Найти. Опять находит дома в области, но догадаться, что пара букв перепутана — никак.
                                                                                          Ввожу: Дмитровка 2/1. Думаю, уж сейчас-то сложно не догадаться, ибо символ "/" стандартно служит для разделения сдвоенных адресов. Ага, фигушки там! Дмитровское шоссе 2 ст1, дмитровка-добрыниха 2 км 1а и даже малая дмитровка 12 с 2… и только потом — нужное. Парсинг — никакой, но спасибо, что вообще живой.
                                                                                          Ясное дело, что-то посложнее — это на грани фантастики. 2ГИС не хочет обучать пользователя принципам правильного поиска. Гибкого поиска, считай, нет. Не раз были случаи, когда даже правильное написание не находило то, что нужно, хотя по клику на карте адрес правильно отображался. Допилите уже индексы, а то за родину стыдно.

                                                                                          8) Размеры кнопок не настроены под разные устройства. На айпаде многие кнопки (особенно кнопки транспорта) — просто крохотные, часто промахиваюсь даже с моими пальцами пианиста. То, как два года назад обновление интерфейса испортило работу с остановками и маршрутами — словами не описать, одни эмоции. Остановки и трассы за жирнющими линиями маршрута не видны. Да, некая логика есть, но она опять не доведена до ума, нелогична и сбивает с толку.

                                                                                          И т.д., и т.п. И с каждым крупным обновлением легче не становится. Тут уже не до «фич» — тут бы вернуть, как было.

                                                                                          А вот реально крутые предложения:
                                                                                          а) Хотите сэкономить место в памяти? Просто дайте людям возможность выбирать, что загружать, а что нет. Дать возможность отключить от рендеринга подъезды и лишние слои карты, например, поиск по данным организации. Они всё равно по большей части не актуальны в промзоне и часто контактируют не с компанией, а с определёнными сотрудниками, плюс их можно грузить онлайн. Верните людям прежнюю скорость. Нам ехать, а не подъезды! Их можно без проблем подгружать при клике на дом, зачем мне видеть подъезд, если я строю маршрут с другого конца города?
                                                                                          б) На ходу подгружать последние изменения в маршрутах транспорта. Дома не убегут с насиженных мест, а вот маршруты — часто меняются. Почему надо грузить карту целиком? Не каждый джамшут может загрузить в дороге сотни мегабайт, но сотни килобайт — вполне. Особенно актуально для тех, кто редко обновляется. Так они хотя бы не окажутся в другом конце области, потому что бесы МосГорТранс попутали (пример из личной практики).
                                                                                          в) Пред-анализ вводимого адреса. Научите уже пользователей правильному синтаксису запросов. Меня, хотя бы, а то я порой тихо фигею.
                                                                                          г) Уволить главного дизайнера и нанять меня. Шучу, я к вам и за 100к не пойду. За 150 пойду. Это в любом случае меньше, чем вы сейчас платите.
                                                                                            +2
                                                                                            Отвечу только про то, что касается подъездов.

                                                                                            Про выбор между «увеличить размер базы» и «искать, даже если пользователь не ввёл квартира или подъезд» написано в статье. Мы сделали выбор в пользу размера, т.к. сейчас отсутствие свободного места — боль многих.

                                                                                            Мы знали, что не всё сделано идеально. Доделываем и будем продолжать это делать. Подъезды собраны не во всех домах. Собираем и будем продолжать.
                                                                                            Почему выпустили до того, как всё будет собрано и исправлено? Потому что можем помочь многим уже сейчас. Для меня лично это гораздо важнее, чем впечатление идеальности и законченности.
                                                                                              –2
                                                                                              Какой идиот молча нагадил мне в карму? Вот так и давят невменяемые молчуны вменяемых беззащитных пользователей. Желание что-то доказывать сразу отбито, задачей затыкания ртов несогласным выполнена. Коммуникация с клиентами на Хабре — ниже плинтуса, такая же не слышащая жалобы людей компания, как и ваша.
                                                                                              Отправил в личку. Здесь бодаться дураками — я пас.
                                                                                                0
                                                                                                А по поводу всего остального?
                                                                                                0
                                                                                                >7) Алгоритмы поиска по адресам — треш.
                                                                                                Подтверждаю. Этим летом их ухудшили существенно. Я писал в приложении… но… Хорошо что я знаю оптимальные маршруты до своих любимых мест. 2Г многие варианты, которыми я пользуюсь, не показывает. Например «пол часа пешком до элетрички, а потом быстро доехать» никогда не находилось, а у меня это любимый способ…

                                                                                                >3) Требовать регистрации через аккаунты соцсетей
                                                                                                Да. Слишком многое не работает без регистрации. например любимые места. Тоже раньше работало при полном off-line, а теперь перестало. И объяснение «чтобы синхронизировать между устройствами» мне не кажется удовлетворительным. Во всяком случае для того, чтобы ломать старый, работающий режим. А вот объяснение «мы будем собирать эти данные и таргетировать рекламу» (читай продавать данные) кажется реалистичным. Извините.

                                                                                                Основная фишка 2Г — полный offline и организации. И это ухудшается.

                                                                                                Измерение расстояний на андроиде: как-то изотерически включается. Кто-нибудь может точно рассказать как происходит выбор между режимами масштабирования и измерения расстояний? Про то, что одна прямая — в городе недостаточно, промолчу.
                                                                                                  0
                                                                                                  Избранное не требует обязательной регистрации, как и места пользователя (дом/работа). Действительно, мы предлагаем пользователю авторизоваться, но диалог можно пропустить.
                                                                                                  Зачем вообще диалог? Затем, чтобы пользователи оставляли фотографии и отзывы. Если кто-то хочет написать отзыв, но видит форму авторизации, он может передумать. Если же авторизоваться предлагают ради полезной функции — синхронизации избранного (а я действительно считаю её полезной), пользователь может согласиться, а позже не сталкиваться с отталкивающей формой.
                                                                                                  Что касается вашего предположения, то таргетинг можно реализовать без всякой авторизации, да и для сбора (и, возможно, продажи) обобщённых данных о поведении пользователей никакая авторизация не нужна.

                                                                                                  Режим измерения расстояния включается, когда пользователь ставит на экран два пальца и не перемещает их в течение какого-то времени.
                                                                                                0
                                                                                                Красавчики!
                                                                                                  0

                                                                                                  А используется JSON или binary JSON? (гуглятся разные спецификации как BSON, UBJSON и BJSON)

                                                                                                    0
                                                                                                    На входе утилиты построения базы — обычный JSON. В базе же, как описано в примечании про эволюцию формата хранения, свой бинарный формат.
                                                                                                    0
                                                                                                    А можно как-нибудь отключить эту фишку?

                                                                                                    У меня iPhone 4S и 2GIS на нем работает ну оооооооооооооочень неторопливо. Настолько, что успеваешь задуматься — «а может нафиг и проще было бы в гугле посмотреть?»

                                                                                                    Интерфейс стал крайне неотзывчивым. На ввод символов в строку поиска реагирует с 2-3 секундной задержкой… на каждый символ.
                                                                                                      0
                                                                                                      Если честно, я не думаю, что это вызвано подъездами :) И нет, отключить нельзя.
                                                                                                      Более того, мы отказались от поддержки iOS 9 (т.е. в том числе и от iPhone 4s). Новых версий выходить уже не будет. В конце концов, уже почти семь лет прошло, да и сама Apple два года как прекратила поддержку.
                                                                                                      0
                                                                                                      Если честно, я не думаю, что это вызвано подъездами :)

                                                                                                      А зря вы так не думаете. Потому что до обновления подъездов все работало адекватно-быстро.

                                                                                                      ) И нет, отключить нельзя.

                                                                                                      И что мне теперь делать?
                                                                                                      Выкинуть телефон?
                                                                                                      Или выкинуть 2ГИС с телефона?

                                                                                                      мы отказались от поддержки iOS 9 (т.е. в том числе и от iPhone 4s).

                                                                                                      Ну просто отлично (сарказм)!
                                                                                                      Кто-то там писал, что от поддержки Windows Phone версии не отказывается, мол, 300к клиентов, а iOS 9 внезапно мимо кассы.

                                                                                                      Сколько у вас клиентов на старых айфонах? Адын я? Да ни в жить не поверю!

                                                                                                      И, как мне поставить старую версию?
                                                                                                        0
                                                                                                        Про Windows Phone: для WP8 есть только одна версия, для которой выходят обновления данных. Эта версия не обновлялась уже несколько лет, и там есть баги, в том числе и приводящие к падениям, но… увы.
                                                                                                        Для вашей версии, как и для версии под WP8, мы будем продолжать выпускать новые базы. Под прекращением поддержки я имел в виду только то, что не будет новых версий.
                                                                                                        Более того, это вынужденная мера. Во-первых, поддержка iOS 9 накладывает ограничения на использование некоторых инструментов. Во-вторых, в этой версии ОС есть баги, которые приходилось обходить очень специфичными костылями. И, наконец, в xcode 10 уже не будет возможности собрать 32-битное приложение.
                                                                                                        Что касается аудитории, то на iOS 9 сейчас примерно в 2 раза меньше пользователей, чем на WP8.
                                                                                                        0
                                                                                                        И, наконец, в xcode 10 уже не будет возможности собрать 32-битное приложение.

                                                                                                        Ну это ведь не моя проблема как пользователя, правда?

                                                                                                        Под прекращением поддержки я имел в виду только то, что не будет новых версий.
                                                                                                        Более того, это вынужденная мера

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

                                                                                                        Новая — просто адовый ад.

                                                                                                        Запускаю, жду 3 минуты… потом начинаю вводить в поиске «Алхимик». На каждую букву, каждую — система поиска предлагает варианты, причем именно «алхимика» среди них нет, хотя на карте он есть. Разумеется, учитывая неотзывчивость системы, очень легко опечататься. Я опечатываюсь в 1 букве — начинается шоу. Мне начинают предлагать что угодно, но уже точно не алхимик.

                                                                                                        И пока система не отработает ввод до самого конца — она стирать ошибочный ввод не даёт.

                                                                                                        Вот вам реальный юзеркейс!

                                                                                                        … мы будем продолжать выпускать новые базы.… не будет новых версий.

                                                                                                        Для меня это звучит так, что если я буду только обновлять базу, но не обновлять приложение — подъездов не будет, к примеру.

                                                                                                        Короче, может вам денег занести, чтобы вы специально для меня скомпилировали приложение, которое будет на 4S не тормозить? Ок. Сколько и кому?
                                                                                                          0
                                                                                                          У меня одного 2ГИС помогает ехать по городу через запрещающий знак, предлагает повернуть через сплошную и развернуться на пешеходе?
                                                                                                          Хоть ни разу не предлагал ехать против шерсти при односторонке))
                                                                                                            0
                                                                                                            О всех таких случаях вы можете сообщать прямо из приложения — обязательно разберёмся и поправим.

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

                                                                                                          Самое читаемое