- PVSM.RU - https://www.pvsm.ru -
Подробная и точная карта мира является для нашей компании одним из краеугольных камней. Это основа, точка отсчёта, своеобразное начало координат. Поиск и выбор жилья нашими пользователями начинается именно с анализа нашей карты. И несмотря на обилие картографических сервисов, существующих в мире, нам всё же пришлось в своё время создавать свою собственную карту.
Нашего единственного штатного картографа зовут Зак Уокер (Zach Walker). Он отвечает за формирование карты, нанесения всевозможных объектов и границ. Почему же мы пошли по пути наибольшего сопротивления и развиваем собственную карту, вместо того, чтобы адаптировать под себя одно из существующих решений?
Всё дело в AT-AT. Это программный инструмент, который мы разработали для создания схемы взаимосвязей локаций, их влияния друг на друга. Выглядит это так:
Нас постоянно интересует, как люди делают выбор, рассматривая места на карте, где они никогда в жизни не бывали? Как они их себе представляют? Как вы выбираете идеальный маршрут путешествия и место для проживания, глядя на одну лишь карту?
Со своей стороны, мы стараемся помочь нашим пользователям несколькими разными путями:
Всё вышеперечисленное призвано помочь путешественникам узнать те или иные места не только с «туристической» точки зрения, не однобоко. Ведь шаблонные обзоры и путеводители обычно дают очень узкое и поверхностное представление о странах и городах.
Зелёным выделены традиционные «туристические» места проживания, красным — жильё из базы Airbnb.
Конечно, наша главная задача заключается в том, чтобы предложить пользователю именно те места для проживания, которые лучше всего удовлетворяли бы его пожеланиям. С другой стороны, нам нужно как-то выделить миллионы уникальных листингов, размещённых на нашем сервисе хозяевами по всему миру.
Гид по районам будет полезен только в том случае, если вы ищете идеальное место для проживания. Но на карте не обозначены многие районы, интересные с точки зрения культуры и истории. И не потому, что у нас не доходят руки, просто обычно такая информация известна лишь местным жителям. Причём под «районом» мы подразумеваем не административную городскую единицу. В данном случае районом может быть часть города, расположенная вдоль дороги, пересекающей три «классических» района. Или это может быть конгломерат из нескольких «классических» районов.
В обязанности Зака Уокера как раз и входит поиск и нанесение на карту подобных мест, чьи границы очерчены именно по культурно-контекстному принципу, а не административно-территориальному. Для этого Зак изучает различную историческую информацию, расспрашивает местных жителей и переписывается с владельцами жилья. Так что, когда пользователь вводит запрос по какому-то региону, ему предлагаются варианты из разных частей этого региона, а не только самых популярных.
Когда мы приступили к разработке этого механизма, то выяснилось, что наша текущая архитектура и инструментарий не позволяют внедрить подобный функционал. Так мы пришли к необходимости создания вышеупомянутого AT-AT.
Нам нужен был инструмент, облегчающий задачу нанесения на карту подобных районов. Кстати, название AT-AT позаимствовано из «Звёздных войн», если помните, так назывались шагающие танки.
Схематически состав АТ-АТ можно представить следующим образом:
В первую очередь, нам нужно было обобщить существующую систему, чтобы она смогла обрабатывать различные географические полигоны (континенты, регионы, страны, области, специальные районы, маленькие городки и деревни), а не только мегаполисы и административные районы.
После того, как полигон создан, бэкэнд вычисляет:
Управляться с картой, заполненной всевозможными районами, может быть слишком тяжело. Опытным путём мы пришли к различным режимам отображения, при которых рабочий интерфейс становится прозрачным.
Наши разработчики даже сформировали негласные внутренние правила при работе с AT-AT:
1) Не ломай кнопку «назад»
2) Рендери только то, что необходимо
3) Отображай информацию по мере надобности
4) Уйди с дороги!
При одиночном клике мыши выбирается полигон и рендерятся только соседние полигоны:
А при двойном клике происходит фокусирование на выбранном полигоне:
Очевидно, что в работе над таким сложным проектом, как сервис Airbnb, приходится использовать различные внутренние инструменты. АТ-АТ лишь один из многих, он облегчает первичную задачу по нанесению на карту районов, которые потом используются другими нашими сервисами и инструментами. И, создавая свои собственные вспомогательные инструменты для работы над какими-то большими проектами, не забывайте, что невозможно предсказать все будущие сценарии использования.
Автор: AirbnbHabr
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/karta/84189
Ссылки в тексте:
[1] алгоритм подбора оптимальных мест: http://nerds.airbnb.com/location-relevance/
[2] гид по районам: https://www.airbnb.com/locations
[3] исследовательская команда: http://www.wired.com/2014/07/airbnb_recommendations/
[4] Источник: http://habrahabr.ru/post/251627/
Нажмите здесь для печати.