Анна Безрукова
продакт мобилки
Погода в iOS
Мы в 2ГИС всегда стремимся узнать про города всё: у нас классные детальные данные об организациях, зданиях, дорогах и многом другом. И в какой-то момент задумались, что погода тоже сильно влияет на опыт горожан. Так почему бы нам не подсказать, что их ждёт по дороге — может, стоит взять с собой зонтик или солнечные очки?
История погоды в 2ГИС
Идея Погоды на карте возникла у нас давно — даже успели её реализовать в предыдущей веб-версии 2ГИС, но при переезде на текущую мы её потеряли. А в мобильном приложении она существовала только как идея, вот как выглядел старый макет для технического задания.

Второе дыхание погода получила на внутреннем хакатоне год назад. На этапе генерации идей для хакатона мы придумали и нарисовали макеты для тепловой карты осадков и температур, POI с градусами и иммерсивной погоды: дождя, снега и солнца прямо на карте.

Такие макеты мы сделали на хакатоне: карта осадков на дальних зумах (первый и второй скрин), на ближнем зуме (третий) и карта температур (четвёртый скрин)

В результате хакатона сделали первую часть — у нас появился прототип тепловой карты.

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

Где взять прогноз
Поскольку 2ГИС не собирает и не обрабатывает данные метеостанций, нам нужно было найти провайдера данных. Для прототипа подходил любой вариант — открытые ключи к погодным данным часто бесплатные и рассчитаны на несколько тысяч запросов в сутки. Но когда речь заходит об использовании данных для многомиллионной аудитории, вопрос «кого выбирать» перестаёт иметь простой ответ.

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

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

Чтобы выбрать провайдера данных, мы вели долгие переговоры с «Гисметео», Яндекс. Погодой, изучали иностранные ресурсы и упёрлись в неожиданную проблему. Ни один из провайдеров не соглашался на тестовый период без явного брендирования и за разумные деньги. Цены на white-label данные начинались от миллиона рублей, что противоречит концепции MVP. А в первой версии мы хотели чтобы погода выглядела так:
Как видно на прототипах, разместить брендирование физически негде. Кроме того, здесь виджет некликабельный, а добавлять туда логотип, соответствующий брендбуку провайдеров, мы не были готовы — он увеличил бы виджет в несколько раз и съел бы огромное место на карте.

Узнали, что в приложении VK есть погода с данными ИА «Метеоновости». Мы связались с их командой, протестировали качество данных и довольно быстро и безболезненно договорились на тестовый период.
Погода и местоположение
Когда мы определились с источником данных, возник следующий вопрос — как обращаться к нему так, чтобы показывать актуальную погоду и при этом не греть воздух лишними запросами. Это важно, потому что запросы создают нагрузку на устройство пользователя, тратят его трафик и наши деньги.

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

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

В ближайшее время мы это починим — будем запрашивать погоду на начало и конец часа и с течением времени плавно менять температуру.
Тучка, снег и солнышко
Ещё один интересный момент в данных о погоде — это отображение иконки. Она показывает три параметра: облачность, осадки и дополнительные явления. И внутри них возможна удивительная вариативность! У каждого провайдера — собственный набор иконок, параметров и интенсивности, поэтому при смене источника данных нам пришлось поправить и алгоритм отображения. Для MVP выбрали такие.
Располагается в спектре от «ясно»
до «неба не видно». Всего семь ступеней, которые мы упростили
до ясно и облачно.
Дождь, снег, град, метель, морось, «другие осадки» и их отсутствие. Их мы упростили
до трёх: дождь, снег и отсутствие
с интенсивностью «есть-нет».
Туман, гроза, пыльная буря, шквал, торнадо, изморозь, а ещё позёмок —
из всего этого мы оставили туман
и грозу.
Облачность
Осадки
Другие явления
До начала работы с погодой мы не знали, что такое позёмок. Возможно, не знаете и вы, так что вот картинка →
Некоторые провайдеры также предлагают «ночную» и «дневную» версию иконок, где солнце сменяется на луну. Получается, иконка должна сочетать
все перечисленные параметры. Комбинаций может быть великое множество, и для каждой нужна собственная иконка. Для старта мы оставили всего 12 — нужно же с чего-то начинать.
Что в итоге и что дальше
Сейчас погода доступна половине пользователей iOS-приложения версии 6.34 и выше. А в ближайший месяц появится у всех пользователей, в том числе и на Android.

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

Кроме того, планируем сделать виджет кликабельным и добавить в него больше информации о прогнозе, а ещё фана вроде анимации. Следите за новостями!



Нажимая кнопку «Комментировать», вы принимаете условия Лицензионного соглашения и даёте ООО «ДубльГИС» согласие на обработку персональных данных на условиях и в целях, определённых «Политикой конфиденциальности».