как поменять адрес в 2гис
Как изменить дом в 2гис
Для того, чтобы адрес Вашего дома появился на карте «2ГИС», надо обратиться в офис компании со следующим пакетом документов:
Офис компании «2ГИС» в г. Якутске находится по адресу: ул. Дзержинского, д.26/4, 6 этаж.
Перечисленные документы также можно направить электронную почту: [email protected]
Адрес Вашего дома появится на карте «2ГИС» в начале месяца, следующего за месяцем подачи заявки.
ДОБАВЛЕНИЕ АДРЕСА В «2ГИС» ОСУЩЕСТВЛЯЕТСЯ БЕСПЛАТНО
Чтобы запомнить важный адрес или интересную компанию, пользователи добавляют их в Избранное. Сохранённые таким образом объекты появляются на всех устройствах, где авторизован пользователь. Добавляйте компании на 2gis.ru и возвращайтесь к ним в мобильном приложении — и наоборот.
Избранные места и компании хранятся в отдельных папках — мы называем их подборками. Вы можете сохранять все компании в одной подборке или создавать для каждого случая новую. Пользователи могут дать новой подборке имя, а в мобильных приложениях можно указать в настройках, хотите ли вы видеть иконки объектов Избранного на карте.
Кроме того, в Избранное можно внести адреса своих дома и работы, чтобы быстрее искать способы проезда и строить маршруты.
Добавить объект в «Избранное»
Посмотреть своё «Избранное»
Отметить в «Избранном» дом и работу
Удалить компанию из подборки
Есть два способа. Первый:
Зарегистрированные пользователи могут отмечать в разделе «Избранное» адреса своих дома и работы, чтобы быстрее строить маршруты и находить компании поблизости.
Отметить в «Избранном» дом и работу
Изменить или удалить адрес дома и работы
Чтобы совсем удалить адрес дома или работы, нажмите на «Изменить» в правом верхнем углу экрана → минус слева от строки «Дом» или «Работа» → «Удалить».
Личный кабинет 2gis
Функционал личного кабинета
Компании, зарегистрированные в 2 gis, через личный кабинет могут отслеживать статистику по компании, заказывать рекламу и обновлять информацию. Для изменения данных о компании нужно внести сведения в личном кабинете в разделе «Данные о компании». После изменений, с представителем компании связывается менеджер и уточняет информацию. Изменить можно адрес, контактные данные, расписание, аккаунт или группу в соцсетях, добавить сайт, фотографии, логотип компании.
Чтобы посмотреть аналитику по просмотрам организации в справочнике, необходимо открыть вкладку «Статистика». В разделе содержится 3 раздела:
Во вкладке «Сфера деятельности» содержатся общие данные по интересу пользователей к сфере деятельности компании, спрос на услуги, статистика поисковых запросов. Раздел «Страница компании» содержит данные о количествах просмотров страницы. В разделе «Лента событий» отражаются просмотры пользователей и их действия на странице компании. События дополняются данными о пользователе, его местоположением, видом устройства с которого был совершен просмотр.
Во вкладке «Реклама» клиент получает возможность управлять рекламными компаниями, заказывать рекламную продукцию, счета на оплату, отслеживать сроки действия. Здесь же содержатся рекламные материалы по текущим и архивным акциям, которые можно редактировать. Для заказа рекламы необходимо заполнить заявку в разделе «Реклама», менеджер перезвонит для уточнения тарифов и консультации по предоставляемым рекламным продуктам. После согласования и оплаты услуг, информация о рекламной компании отображается в личном кабинете, где по ней можно отслеживать статистику и сроки ее действия.
Регистрация в кабинете 2 gis
Зарегистрировать аккаунт компании в 2 gis можно по ссылке https://account.2gis.com/. Для этого нужно нажать «Получить доступ в личный кабинет», затем выбираем город и компанию по названию, ОГРН или ИНН. Если компания в справочнике не зарегистрирована, то система перенаправит на внесение данных о компании. Процедура бесплатная. Нужно будет заполнить поля:
Заполняются данные контактного лица, нажимаем кнопку «Отправить заявку». В ближайший рабочий день менеджер связывается по контактному телефону и регистрирует компанию в системе. При регистрации менеджер может задать уточняющие вопросы о месте нахождения компании, уточнить юридический и фактический адрес, сферу деятельности, рубрики справочника, в которых будет размещаться организация. После сверки данных информация об организации появляется в онлайн справочнике сразу же, а в версии ПК после выхода обновления.
Авторизация в личном кабинете 2 gis
Мобильное приложение личного кабинета
Отдельного мобильного приложения для личного кабинета 2 GIS нет. Мобильное приложение 2 GIS для телефонов включает карты городов, навигатор, возможность отправки сообщений. Скачать приложение можно для устройств на программном обеспечении ios или android в системах Google Play или AppStore.
Клиентская поддержка через кабинет
Получить консультация по использованию Личного кабинета можно через форму технической поддержки. Нажимаем кнопку «Нужно помощь», далее необходимо описать возникшую проблему или задать вопрос. При необходимости можно прикрепить скриншот. Далее нажимаем «Отправить сообщение». Ответ будет получен по электронной почте. Также есть перечень наиболее частых вопросов, прежде, чем писать в службу техподдержки с ним нужно ознакомится, для этого нужно нажать на кнопку «Часто задаваемые вопросы». Возможно, для проблемы уже есть готовое решение.
Как отключить личный кабинет?
Удаление непосредственно личного кабинета с 2 gis не предусмотрено. Можно удалить компанию или филиал из справочника. Действие производится через личный кабинет. Переходим на страничку компании, внизу справа есть кнопка «Удалить филиал». Нажимаем ее, во всплывающем сообщении подтверждаем удаление «Да, удалить». Все данные из справочника и из личного кабинета, включая адрес и телефон, будут убраны.
Правила безопасности и конфиденциальности
Защита персональных данных пользователей производится на основании «Политики конфиденциальности». Администрацией сайта 2 gis принимаются меры по защите персональных данных клиентов от неправомерного использования. Осуществляется проверка технических систем, ограничен неавторизованный доступ к данным сторонних лиц. Проверяются и тестируются процессы обработки, передача данных производится в зашифрованном виде.
Предоставление данных о компании третьим лицам осуществляется в соответствии с действующим законодательством и в случаях, когда пользователь дал на это письменное согласие. Допускается размещение ссылок на организацию в социальных сетях, иных интернет-ресурсах в рамках рекламной компании. Пользователи имеют право изменять, дополнять, удалять информацию в личном кабинете самостоятельно. Давать согласие на предоставление информации о компании в рамках использования продуктов 2 gis.
Конструктор карт. Инструкция
Конструктор карт — бесплатный инструмент для компаний, журналистов и блогеров. Помогает создавать карты со своей разметкой: точками, маршрутами, выделенными областями. Такие карты можно добавить на любой сайт.
Что есть в конструкторе
Отметки. Указывают на конкретное место, адрес или компанию. Расставляйте точки вручную или привязывайте к конкретному адресу. Чтобы привязать точку к адресу, введите улицу и дом, название организации или объекта в поисковой строке.
Линии. Пригодятся, чтобы показать маршрут забега, перекрытые улицы, дорогу от остановки до офиса.
Фигуры: квадраты, круги, многоугольники. Помогают выделить на карте небольшой участок или целый район.
Как добавить объекты на карту
Выберите отметку, линию или фигуру и поместите её в нужное место.
Цвет, толщина линии и другие свойства фигур настраиваются в левой панели.
Точкам, линиям и фигурам можно добавить описание — пользователи увидят его, когда кликнут на объект. Если знаете разметку Markdown и HTML, вставляйте в описания картинки.
Отметкам можно добавить подпись, которую всегда видно на карте.
Все отметки, линии и фигуры, которые вы нанесёте на карту, появятся в левой панели. Нажмите на объект в списке, чтобы выделить его на карте. И наоборот: выберите объект на карте, чтобы выделить в списке.
Если добавить объекту описание, оно появится в списке. Так проще отличить одну точку или фигуру от другой.
Площадные объекты могут накладываться друг на друга. Если кликнете по смежной области, то выберете тот объект, который находится на более высоком слое. Чтобы изменить приоритет объектов, перемещайте их в списке вверх и вниз.
Чтобы удалить объект, найдите его в списке и нажмите на крестик.
Как настроить размер карты
Ширина и высота карты настраиваются на верхней панели. Высоту всегда указывают в пикселях. Ширину можно выбрать по размеру экрана.
Как добавить карту на свой сайт
Нажмите на кнопку «Получить код» под картой, скопируйте код и вставьте на свою страничку. Если у сайта есть админка, которая поддерживает HTML, можно сделать это через неё. Если админки нет, добавьте карту прямо в код сайта.
Как пользоваться новым 2ГИС
Мы запустили новую веб-версию 2ГИС — более быструю, удобную и красивую. Она заменила прежнюю версию на 2gis.ru.
Главные особенности новой веб-версии 2ГИС:
Как вращать карту
Зажмите правую кнопку мыши (или Ctrl+левую кнопку мыши) и перемещайте курсор.
Как построить маршрут проезда между городами
Нажмите на кнопку «Поиск проезда» справа от поисковой строки, задайте начальную и конечную точки маршрута и выберите способ проезда «На авто».
Строить маршруты между городами для других видов транспорта 2ГИС пока не умеет.
Как искать компании сразу в нескольких городах
Введите нужный запрос в поисковую строку. 2ГИС выполнит поиск по всей территории, карты, открытой на экране. Приближайте, отдаляйте и просто двигайте карту, чтобы рассмотреть результаты поиска на нужной вам территории.
Чтобы сразу поискать что-то в другом городе, наберите в поиске нужный запрос и название города, например, «тверская москва» — 2ГИС откроет карту Москвы и покажет улицу Тверскую.
Как искать товары
Подробно о том, как искать товары, мы рассказали в статье «Поиск товаров и цен в 2ГИС: как работает».
Если вы представитель компании и хотите, чтобы ваши товары или услуги появились в 2ГИС, читайте статью «Как добавить свои товары и цены в 2ГИС».
Как вернуться в старый 2ГИС
С 22 октября старый 2ГИС стал недоступен. Новый 2ГИС лучше старого — попробуйте с ним поработать, и вы его полюбите так же, как любим мы.
Как поделиться впечатлениями о новом 2ГИС
Если что-то мешает вам полюбить новый 2ГИС, расскажите нам об этом через форму обратной связи в правом нижнем углу экрана.
Если просто хотите поделиться впечатлениями и пожеланиями, тоже не стесняйтесь нам писать! Нам важно знать, что вы думаете.
Как сменить город
Напишите название нужного города в строке поиска и кликните на него в выпадающем меню. Или просто найдите нужный вам город на карте.
Почему поисковый запрос перебрасывает в другой город
Новый 2ГИС выполняет поиск по всем городам сразу. Если в соседнем городе нашлось более точное совпадение с вашим запросом, откроется этот город.
Мы всё время совершенствуем работу поиска. Будем признательны, если вы расскажете нам, при каких запросах 2ГИС перебрасывает вас в другой город — сделать это можно через форму обратной связи в правом нижнем углу экрана.
Как вернуться на главный экран
Нажмите на иконку 2ГИС в левом верхнем углу.
Как распечатать карту
Чтобы распечатать фрагмент карты из онлайн-версии, нажмите значок принтера в правом нижнем углу страницы.
Подробнее о том, как это сделать, читайте в статье «Как напечатать фрагмент карты или справочника».
Почему не получается сообщить о неточности
Сообщить о неточности в справочнике или на карте, а также добавить отсутствующие объекты можно кликнув на «Нашли ошибку в данных?» или «Добавить организацию» в карточке места или компании.
Подробнее о том, как это сделать, читайте в статье «Как сообщить об ошибке в 2ГИС».
Если вы не видите таких кнопок — значит, вы пытаетесь сообщить о неточности там, где такой возможности мы пока не предусмотрели. Пришлите нам скриншот карты 2ГИС с описанием неточности через кнопку обратной связи в нижнем правом углу карты — мы передадим информацию нашим специалистам.
Почему новый 2ГИС поддерживает не все браузеры
Мы бы очень хотели поддерживать все браузеры, но с некоторыми старыми браузерами это практически невозможно. Поэтому рекомендуем обновить ваш браузер до свежей версии: это не только позволит познакомиться с новым 2ГИС, но и большинство других сайтов станут работать быстрее и без ошибок.
Вы просто не умеете редактировать данные
Конечно, вы постоянно что-то редактируете и прекрасно умеете это делать. А что насчёт данных в мобильном приложении, когда на экране нужно разместить большое количество элементов? Не забудьте, что сделать это нужно максимально аккуратно для пользователя, эффективность которого напрямую зависит от удобства ввода. Задача перестаёт быть тривиальной.
Прочитав статью, вы узнаете, как:
В конце вас ждет готовый прототип с исходным кодом, демонстрирующим описанный подход.
Мы в 2ГИС стремимся к максимально точным и актуальным данным. Один из инструментов, обеспечивающих это преимущество — обход территории, в прямом смысле, «ногами». В полях наши специалисты выверяют данные по карте и справочнику, а также собирают массу данных об организации.
Ситуация усложняется следующими требованиями:
Кроме того, требуется предусмотреть краудсорсинговые сценарии и возможность многопользовательской работы на одном устройстве, так как разные специалисты могут пользоваться одним девайсом.
Готовим «удобные» данные
Данные нам нужно не только показывать, но и редактировать. Следовательно, без read /write хранилища не обойтись. Нам подходит SQLite — он отлично работает под Android и включает всю необходимую функциональность.
Для обеспечения удобного расширения данных и однотипной работы с различными объектами решено было использовать JSON для хранения. Причём, любой объект, будь то дом, или фирма, мы описали просто набором «филдов» (или атрибутов), так что типовой объект стал выглядеть так:
В самом простом случае, значения у нас хранятся строкой: True / False, число, дата, диапазон чисел и дат. Более сложные данные для удобства сериализации/десериализации хранятся полноценными объектами и выглядит это так:
Идея в следующем. У нас есть атрибут, однозначно определяемый своим кодом. У него есть какое-то значение, которое может быть, а может отсутствовать (метод isEmpty). Кроме того, мы умеем сравнивать значения двух атрибутов (метод equals).
Сложные атрибуты типа времени работы в нашей реализации выделены отдельными свойствами. Таких атрибутов мало, так что напрягать своим постоянным появлением они не будут. Основная же масса атрибутов укладывается в простую строку или в ссылки на справочник r_values. В примере выше я только их и оставил для простоты.
Вы наверняка обратили внимание на атрибуты «state» и «change_info» — они как раз понадобятся нам для понимания того, изменилось ли значение филда, где и когда он был изменен.
Этого вполне достаточно для описания любой нашей сущности: дом, вход в дом, забор, достопримечательность, фирма.
Единственное, чего нам не хватает — это описания того, как мы должны показать коды атрибутов пользователю.
В этом нам поможет ещё одна сущность — конфигурация филдов (атрибутов). Она должна содержать название и тип филда, чтобы мы могли создать соответствующий контрол для редактирования его значения.
Упрощенно можно представить это так:
Организуем простое хранилище
Перейдем к вопросу хранения в базе, нам ведь нужно не просто утрамбовать данные в какую-то таблицу, нужно еще организовать поиск, индексацию и добавить связи между объектами.
Решение о хранении данных в JSON сразу же упрощает нам жизнь с точки зрения СУБД: нет нужды делать таблицы под каждую сущность, мы фактически работаем в терминах «документа». Но кое-какие связи между объектами нам все-таки потребуются. Например, чтобы показать список всех организаций в здании.
В случае структуры данных 2ГИС, в 90% хватает связи родитель-потомок, поэтому проще всего её разместить прямо в самом объекте. Но в общем случае без таблицы связей не обойтись.
Итоговая структура таблиц будет выглядеть примерно так:
Вот и всё. В простом кейсе этого достаточно для реализации задекларированных в начале статьи требований.
Обращаю ваше внимание на то, что JSON в object_data.attributes хранится как текст. Для экономии места, которого потребуется довольно много, лучше хранить его как BLOB и сжимать при сохранении.
Альтернативный простой вариант — воспользоваться плагином для Sqlite, который позволяет не только сжимать, но еще и шифровать данные. Правда, он платный.
Внимательный читатель наверняка обратил внимание на таблицу object_data_history. Она полностью дублирует object_data, добавляя лишь версию объекта, и позволяет сохранять историю изменений с нужной «глубиной». При желании, можно будет не только показать на экране данные без каких-то существенных доработок логики, но и легко «откатить» состояние объекта на нужную версию. Кроме того, история будет полезна для определения факта изменения объекта.
Делаем «хороший» поиск
За бортом у нас остался только поиск. И тут нам снова поможет SQLite, который предоставляет хоть и ограниченный, но, тем не, менее full text search (FTS). Старые добрые индексы, кстати, никуда не делись и так же будут полезны.
Тут есть один нюанс. В поставку SQLite Андроида расширение FTS не включено. Кроме того, в библиотеке есть и другие полезные расширения, которые вам могут понадобиться. Поэтому придется либо найти уже готовую сборку со всем необходимым, либо собрать самостоятельно, что совсем не сложно. Для этого читаем мануал и делаем все по шагам. Дальше останется только подключить полученный aar к своему проекту и заменить все ссылки с android.database.sqlite.SQLiteDatabase на ваш пакет org.sqlite.database.sqlite.SQLiteDatabase.
Но вернемся к FTS. Использование content-less таблиц (см. таблицу search_data) позволяет построить полнотекстовый индекс без дублирования данных, и мы спокойно можем организовать поиск по названию фирмы, её контактам и рубрикам. Причем индекс можно обновлять на лету при редактировании данных или добавлении новых, так что все сразу становится поискабельным. Огонь!
Если потребуются дополнительные критерии для поиска (например, в нашем случае нужно уметь фильтровать организации, привязанные к конкретному входу в здании), то можно создать соответствующую таблицу для конкретного типа объекта с необходимыми индексами. Понятно, что данные будут дублироваться, но основная наша цель — механизм редактирования данных, за место мы переживаем не сильно.
Пример фильтров, которые используются в нашем приложении, выглядит так:
Таким образом, любая вьюха, на которой мы будем отображать поля для ввода данных, должна содержать layout, в который можно добавлять детей, например:
Реализация добавления будет выглядеть так:
Вводим абстракцию DynamicView, которая позволяет нам скрыть детали реализации конкретного контрола для редактирования какого-то типа атрибута:
И сразу же вводим понятие шаблона и элемента шаблона, который как раз нужен нам для поддержки «динамичности». Нам же хочется иметь возможность прямо на лету менять UI в зависимости от каких-то критериев. Для этого воспользуемся описанием шаблона в JSON:
Шаблоном определяется перечень и порядок атрибутов, которые мы будем редактировать на экране. При необходимости можно объединять контролы в группы, используя start_group / end_group, выделять заголовки bold_caption или скрывать их полностью с помощью show_header.
Есть еще один важный тег — edit_control_type. Он определяет тип контрола, которым будет редактироваться атрибут. Например, если нам в одном случае хочется видеть радиокнопки, а в другом — использовать switch для редактирования булевых атрибутов.
В общем, в описание шаблона можно ввести любую нужную вам гибкость для поддержки необходимых требований, но основное его назначение — видимость и порядок атрибутов.
Объединяем всё вместе
Магию по формированию вьюхи разместим в презентере. Он будет заниматься созданием контролов для редактирования каждого атрибута, расположением их на экране, отображением данных объекта в эти контролы и сохранением изменений в базу.
В методе init получаем конфигурацию методом getFieldsConfiguration. Это перечень доступных для данного типа объекта атрибутов. Затем берём шаблон редактирования, который определяет вид экрана, и в методе addDynamicViews создаем все контролы и добавляем их через addLayoutView в родительский layout.
При сохранении изменений в методе onOkClick мы обращаемся к исходному состоянию объекта, чтобы определить, изменилось ли что-то в текущем состоянии, а затем к таблице с историей object_data_history, чтобы определить, изменилось ли что-то относительно самой первой его версии.
Если текущее состояние не изменилось — ничего не делаем.
Если вернулись к к первой версии —откатываем изменения.
Если это новое состояние — обновляем object_data_history.
Если пользователь нажал «бек» — с помощью этого же механизма можем его предупредить о необходимости сохранения изменений. И всё это достигается простой проверкой на равенство атрибутов объекта.
Реализация редактирования строкового атрибута
Рассмотрим, как выглядит реализация контрола для редактирования строкового атрибута. От нас требуется реализовать DynamicView. Давайте взглянем на код:
Все довольно тривиально. Мы создаем EditText, в методе setValue устанавливаем в него значение, в методе getCurrentValue возвращаем текущее значение и подписываемся на событие потери фокуса, чтоб запомнить, где и когда пользователь его менял.
В базовой реализации метод setInitialValue предназначен для сохранения исходного значения. rememberChangeLocation фиксирует дату и место изменения. А метод setChangeInfo делает всю магию: сравнивает текущее значение атрибута с исходным, определяет статусы изменения атрибута и устанавливает changeInfo.
Остальные контролы реализованы аналогично, нет смысла рассматривать их дополнительно. Пример дизайна некоторых из них представлен ниже.
Единственное, на что хочется обратить внимание, это на фотографии. По требованиям, нам нужен механизм, благодаря которому мы сможем привязать любое фото к нужному атрибуту.
Мы воспользовались простым решением — добавили к фоткам теги. Причем набор тегов определяется типом объекта, а сами теги могут соответствовать атрибутам, хотя и не обязательно.
На экране это выглядит так:
Пользователь фотографирует, указывает нужные теги. Специалист в офисе сможет по фото внести все необходимые данные в систему. Можно пойти дальше и сделать автоматическое распознавание нужной информации на картинке, например, найти ИНН или ОГРН. Это в наш век космических кораблей делается элементарно прямо на девайсе.
Итоговая структура взаимосвязей выглядит так:
Шаблоны редактирования можно хранить как угодно, мы их складываем в базу и доставляем до приложения с сервера при получении изменений. Это позволяет менять экраны прям на лету, достаточно только скачать новые шаблоны.
Можно развить реализацию и дальше, используя тот же самый механизм для просмотра информации. Достаточно сделать шаблон для редактирования фирмы и для её просмотра. Будет два шаблона и два экрана, но оба будут формироваться динамически с помощью описанного выше подхода.
Многопользовательский режим за пять минут
Давайте теперь поговорим про многопользовательский режим. В начале статьи я обещал показать, как сделать его за пять минут. И тут нам опять поможет фишка SQLite. Смотрите, с точки зрения подготовки данных наша реальность выглядит так:
На беке есть экспорт, который собирает данные со всех внутренних систем, нарезает их по «регионам» и выгружает все необходимое region.sqlite — все атрибуты по геообъектам и по фирмам.
«Регионы» пользователь скачивает себе на телефон — это общие для всех данные. Если с одним устройством работают разные люди, то они используют одни и те же данные «региона».
Работа, которую они делают по сбору новых организаций и актуализации существующих, должна быть персонифицирована: у каждого пользователя свои задачи и свои результаты их выполнения. Эти данные мы фиксируем в базе пользователя user.sqlite. Чтобы их было удобно выгребать из базы и делать джойны с данными региона, пользуемся командой
ATTACH database в SQLIte.
Нет никакой необходимости хранить какие-то связи с пользователями внутри одной базы, достаточно сделать свою базу для каждого пользователя и приаттачить регион. Если пользователь окажется в другом регионе — просто аттачим этот регион. Остальное работает автоматически.
Эта простая команда просто драматически, практически до нуля, снижает трудозатраты в сценарии многопользовательской работы.
Про доставку обновлений с сервера
Так как все данные у нас уложены фактически в одну таблицу в самом простом кейсе, то в базу региона нам достаточно добавить только версию данных. У нас на бекенде используется сквозное версионирование, что сильно упрощает жизнь.
Это означает, что нам нужно всего одно число — максимальная версия данных на момент выгрузки, которую мы сохраняем в базу региона. Для получения обновлений достаточно передать эту версию и получить все изменения и удаления. Метод API у нас выглядит примерно так:
В целом, получение данных с сервера имеет опосредованное отношение к теме статьи. Я упомянул его лишь потому, что этим механизмом можно воспользоваться, если вы хотите доставлять шаблоны редактирования, не деплоя при этом приложение. Т.е. нам, чтобы изменить экран редактирования, достаточно сходить на сервер и получить свеженькие шаблоны. Довольно очевидно и реализуется легко.
В заключении хочется сказать, что относительная простота решения заключается в простой структуре данных. Правильная организация данных позволила закрыть существенную часть требований, а готовые технические решения и паттерны справились с остальным.
Стоит иметь ввиду, что наличие требований на массовое изменение или выборку отдельных атрибутов объектов в данной модели доставит вам много неудобств и скажется на производительности. В таком случае, стоит серьезно подумать о том, подходит ли вам подобное решение.
Исходный код к статье с готовым примером реализации можно посмотреть на гитхабе.