Комментарии 11
Спасибо, интересно.
То есть mapsforge/vtm — основа мобильной версии 2ГИС?
Поэтажные планы торговых центров — одна из печенек 2ГИС, будет интересно ознакомиться с кухней.
То есть mapsforge/vtm — основа мобильной версии 2ГИС?
Поэтажные планы торговых центров — одна из печенек 2ГИС, будет интересно ознакомиться с кухней.
В мобильном 2ГИС используется наш собственный закрытый (по крайней мере пока) движек с кастомным форматом данных и навороченной стилизацией.
mapsforge/vtm же — открытый, основанный на OSM данных. Его мы используем в своём внутреннем продукте, предназначенном для сбора данных на местности, когда наши специалисты прям ногами ходят по бренной земле и выверяют информацию.
Предвосхищая вопрос «почему же не использовать свой собственный» ответ, вкратце, такой: mapsforge/vtm было, на тот момент, быстрее интегрировать. Он довольно прост в использовании и достаточно быстрый. Это основные критерии, ведь для выверки нам не нужны излишние красивости, которых требует публичный продукт. Если будет возможность и необходимость перейти на нашу собственную разработку — сделаем это. Благо, работа с картой абстрагирована от остальной логики, и переход произойдёт относительно просто.
mapsforge/vtm же — открытый, основанный на OSM данных. Его мы используем в своём внутреннем продукте, предназначенном для сбора данных на местности, когда наши специалисты прям ногами ходят по бренной земле и выверяют информацию.
Предвосхищая вопрос «почему же не использовать свой собственный» ответ, вкратце, такой: mapsforge/vtm было, на тот момент, быстрее интегрировать. Он довольно прост в использовании и достаточно быстрый. Это основные критерии, ведь для выверки нам не нужны излишние красивости, которых требует публичный продукт. Если будет возможность и необходимость перейти на нашу собственную разработку — сделаем это. Благо, работа с картой абстрагирована от остальной логики, и переход произойдёт относительно просто.
Если не секрет, почему 2ГИС решил делать свой векторный формат, а не использовать MVT/VTM и пр.?
Да секретов тут никаких нет. 2ГИС появился гораздо раньше, чем тот же mapbox или carto. Даже на текущий момент нет какого то стандарта по организации данных для векторных тайлов в компактном виде, а уж тем более стандартов по их стилизации. Приходится изобретать свои велосипеды.
Ну и есть еще несколько аргументов в пользу своего формата:
1. Полный контроль над структурой данных с возможностью обеспечить хороший баланс между производительностью и потреблением памяти
2. Данные в проприетарном формате сложнее позаимствовать без спроса:)
Ну и есть еще несколько аргументов в пользу своего формата:
1. Полный контроль над структурой данных с возможностью обеспечить хороший баланс между производительностью и потреблением памяти
2. Данные в проприетарном формате сложнее позаимствовать без спроса:)
«Сделать мобильную карту за пару дней» — заголовок немного нечестный, не находите?
Со звездочкой и сноской мелким шрифтом «без учета времени на разработку сидинга тайлов, их обновления в приложеньках пользователей, переключения языков для слоев названий и других первоочередных штук». А как быть с оптимизацией наполнения/размера тайлов, чтобы они не сожрали все место и весть трафик?
Вскользь упоминается, как лекго прикрутить FTS на SQLite. Но сделать юзабельный поиск на данных OSM — крайне нетривиальная задача. Даже Nominatim часто лажает с российскими адресами и ранжированием результатов.
А как быть с предобработкой осмерских фантазий — тысячеэтажных домов, дворцов культуры с amenity=«brothel», кашей из тэгов?
Вменяемые офлайн-карты можно пересчитать по пальцам (и да, 2ГИС определенно хорош). Это наталкивает на мысль, что андроид-активити, заполненный из getMapFile(«cyprus.map») — это исчезающе крошечная часть приложения, которое не стыдно назвать картой.
Со звездочкой и сноской мелким шрифтом «без учета времени на разработку сидинга тайлов, их обновления в приложеньках пользователей, переключения языков для слоев названий и других первоочередных штук». А как быть с оптимизацией наполнения/размера тайлов, чтобы они не сожрали все место и весть трафик?
Вскользь упоминается, как лекго прикрутить FTS на SQLite. Но сделать юзабельный поиск на данных OSM — крайне нетривиальная задача. Даже Nominatim часто лажает с российскими адресами и ранжированием результатов.
А как быть с предобработкой осмерских фантазий — тысячеэтажных домов, дворцов культуры с amenity=«brothel», кашей из тэгов?
Вменяемые офлайн-карты можно пересчитать по пальцам (и да, 2ГИС определенно хорош). Это наталкивает на мысль, что андроид-активити, заполненный из getMapFile(«cyprus.map») — это исчезающе крошечная часть приложения, которое не стыдно назвать картой.
Вы конечно же правы. Как обычно — весь дьявол в деталях.
Но статья и не подразумевала создание совершенного приложения с выходом в прод. Она ведь всего лишь демонстрирует один из возможных инструментов для тех, кто этого ни разу не делал. Не более того. И это вполне осуществимо за два дня, никакого лукавства.
Про юзабельный поиск. Согласен с вами, что для того, чтобы сделать навороченную выдачу с группировкой по типам объектов, приоритетами, подсказками и прочим, встроенного в SQLite FTS недостаточно. Но всё ведь зависит от требований.
Например, в нашем приложении для выверки данных специалистам достаточно простого поиска по названию организации, и поиска адреса по названию улицы и номера дома. Вполне юзабельно и достаточно указанного выше FTS.
Решения же на данных OSM (со своими недостатками и преимуществами) существуют и пользуются спросом. Тот же maps.me.
Понятно, что если требуется получить качество данных приближенное к 2ГИС — то это серьезная задача. Но, опять же, всё определяется требованиями к продукту.
Ну а в каком направлении действовать, если вас устроит OSM, показано в статье.
Более того, если у вас есть свои данные, их легко завернуть в MAP файл плагином от mapsforge и использовать для отображения описанный выше движек.
Но статья и не подразумевала создание совершенного приложения с выходом в прод. Она ведь всего лишь демонстрирует один из возможных инструментов для тех, кто этого ни разу не делал. Не более того. И это вполне осуществимо за два дня, никакого лукавства.
Про юзабельный поиск. Согласен с вами, что для того, чтобы сделать навороченную выдачу с группировкой по типам объектов, приоритетами, подсказками и прочим, встроенного в SQLite FTS недостаточно. Но всё ведь зависит от требований.
Например, в нашем приложении для выверки данных специалистам достаточно простого поиска по названию организации, и поиска адреса по названию улицы и номера дома. Вполне юзабельно и достаточно указанного выше FTS.
Решения же на данных OSM (со своими недостатками и преимуществами) существуют и пользуются спросом. Тот же maps.me.
Понятно, что если требуется получить качество данных приближенное к 2ГИС — то это серьезная задача. Но, опять же, всё определяется требованиями к продукту.
Ну а в каком направлении действовать, если вас устроит OSM, показано в статье.
Более того, если у вас есть свои данные, их легко завернуть в MAP файл плагином от mapsforge и использовать для отображения описанный выше движек.
Спасибо, что заменили итоги с «публикуем приложение, набираем звездочки» на «готов скелет», так правда лучше.
Было бы интересно почитать про этажи.
По поводу сидинга — еще есть mapproxy-seed, тоже удобная штука для генерации тайлов из osm или из собственного источника.
Было бы интересно почитать про этажи.
По поводу сидинга — еще есть mapproxy-seed, тоже удобная штука для генерации тайлов из osm или из собственного источника.
Спасибо за полезный комментарий.
Насколько я понимаю, это все таки онлайн решение, которое предоставляет тайловый кэш и поддержку WMS. Основная фишка описанного в статье mapsforge — это оффлайн данные. Если требования предполагают постоянный онлайн — то это существенное смягчение, и выбор вариантов реализации сильно расширяется.
Насколько я понимаю, это все таки онлайн решение, которое предоставляет тайловый кэш и поддержку WMS. Основная фишка описанного в статье mapsforge — это оффлайн данные. Если требования предполагают постоянный онлайн — то это существенное смягчение, и выбор вариантов реализации сильно расширяется.
А что если вместо LocationLayer использовать обычный ItemizedLayer?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Весь мир в кармане или как сделать мобильную карту за пару дней