Интерактивные карты на веб-сайт
У разработчиков веб-сайтов зачастую возникает потребность отобразить карту на сайте, да еще чтобы пользователь мог ее "потрогать" - использовать zoom и возможность перемещать карту. Чаще всего карту подключают на лэндингах каких-нибудь предприятий для отображения их локации или даже нескольких локаций (например, показать все магазины одной сети в городе).
Самое популярное решение для мировой динамической карты на сайте - это Google Maps. В СНГ достаточно популярны (или даже популярнее) Яндекс Карты и сейчас еще набирает популярность сервис 2GIS. Главным конкурентом гуглу во всем мире, пожалуй, является OpenStreetMap, но в виде разных сервисов-оберток.
Открытая база картографических данных
OpenStreetMap (OSM) - это википедия в сфере картографии. Каждый человек может внести правку на карту, например, детально отрисовав свой район, в котором он знает всё до метра. В свою очередь Google Maps в качестве основы для карт использует снимки со спутника. OpenStreetMap представляет из себя не полноценный аналог Google Maps, по большей части это бесплатная база картографических данных, которую может использовать каждый, но для этого необходимо развернуть инфраструктуру. Некоторые компании поднимают свои сервера и используют OSM для собственных нужд, а некоторые разворачивают сервисы для общего доступа, которые являются альтернативами Google Maps API по предоставляемым услугам. На сайте OSM есть даже детальная и очень внушительная таблица сервисов, которые используют их данные.
OpenStreetMap сам по себе представляет хранилище карточных данных, его API предоставляет сообществу возможности вносить правки и выкачать базу. Для того, чтобы данные из этой карты стали интерактивной картинкой на сайте их еще необходимо обработать, кэшировать и отдавать пользователям, что требует достаточно серьезных вычислительных мощностей, отсюда следует, что любой провайдер карточных данных как минимум захочет окупить затраты по их предоставлению.
Различие сервисов
Интерактивная карта как правило включает в себя данные из разных источников. Очень наглядный пример о том, сколько под капотом источников данных есть на странице правообладателей у Яндекса. Проделав такую большую работу по сбору и обработке данных, в теории, Яндекс могли бы поделиться данными с сообществом (OpenStreetMap), но лиценизонные ограничения не позволяют им это сделать, о чем представитель Яндекса ответила при обращении.
Анализ сервисов
Пример с Яндексом показывает, что интерактивная карта - это совокупность данных из разных источников разных стран, объединение этих данных в одну общую мировую базу невозможно (или крааайне сложно) как минимум по лицензионным причинам. Отсюда следует вывод, что для отображения карты на сайте нет универсального сервиса, который подойдет всем, поэтому придется выбирать. Каквам команда на основе экспертизы наших участников провела анализ некоторых сервисов. Даже если вам не подойдет ни одно из решений, можете взять за основу подход и критерии отбора и провести анализ тех сервисов, что доступны для вашего региона или соответсвуют вашим нуждам.
Google Maps | Mapbox | Geoapify | Yandex Maps | Stadia maps | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
static | interactive | embed | static | interactive | static | interactive | static | interactive | static | interactive | |
Цена за 1к запросов | 2$ | 7$ | бесплатно | 1$ | 5$ | ~0.17$ | Необходимо связываться, чтобы узнать цену | 0.02$ | |||
Оплата | по факту | бесплатно | по факту | 49$ в месяц | - | 20$ в месяц | |||||
Бесплатно | 100к запросов в месяц | 28.5к запросов в месяц | полностью, но нужен billing account | 50к запросов в месяц | 3к запросов в день | 25к запросов в день | нет | 200к запросов в месяц | |||
Свой маркер на карте | есть | 1 без кастомизации | есть | выбор иконок из каталога | есть | есть | |||||
Возможность менять стили | есть | нет | есть | выбор из заготовленных тем | нет | выбор из заготовленных тем | |||||
Источник данных | спутниковые данные + свои | OSM | OSM | множество | OSM, Natural Earth |
Google Maps | |||
---|---|---|---|
static | interactive | embed | |
Цена за 1к запросов | 2$ | 7$ | бесплатно |
Оплата | по факту | бесплатно | |
Бесплатно | 100к запросов в месяц | 28.5к запросов в месяц | полностью, но нужен billing account |
Свой маркер на карте | есть | 1 без кастомизации | |
Возможность менять стили | есть | нет | |
Источник данных | спутниковые данные + свои |
Mapbox | ||
---|---|---|
static | interactive | |
Цена за 1к запросов | 1$ | 5$ |
Оплата | по факту | |
Бесплатно | 50к запросов в месяц | |
Свой маркер на карте | есть | |
Возможность менять стили | есть | |
Источник данных | OSM |
Geoapify | ||
---|---|---|
static | interactive | |
Цена за 1к запросов | ~0.17$ | |
Оплата | 49$ в месяц | |
Бесплатно | 3к запросов в день | |
Свой маркер на карте | выбор иконок из каталога | |
Возможность менять стили | выбор из заготовленных тем | |
Источник данных | OSM |
Yandex Maps | ||
---|---|---|
static | interactive | |
Цена за 1к запросов | Необходимо связываться, чтобы узнать цену | |
Оплата | - | |
Бесплатно | 25к запросов в день | |
Свой маркер на карте | есть | |
Возможность менять стили | нет | |
Источник данных | множество |
Stadia maps | ||
---|---|---|
static | interactive | |
Цена за 1к запросов | 0.02$ | |
Оплата | 20$ в месяц | |
Бесплатно | нет | 200к запросов в месяц |
Свой маркер на карте | есть | |
Возможность менять стили | выбор из заготовленных тем | |
Источник данных | OSM, Natural Earth |
- более детальное пояснение разницы типов предлагаемых карт в отдельной статье: Статические карты против интерактивных;
- 1 запрос в API - это необязательно одно открытие карты, как правило карта состоит из нескольких частей (tile), сколько их может потребоваться для рендирнга в конкретном окне зависит от размера окна, но и обращение за тайлом тоже может не считаться полноценным запросом, например, у Geoapify 4 тайла = 1 запрос;
- цена за 1к указана максимальная после окончания бесплатных запросов, дальшее почти во всех сервисах чем больше запросов, тем ниже цена;
- цена за месячную подписку указана минимальная, рассчет цены за 1к в этом случае тоже исходит из самого дешевого плана.
Собственный хостинг для OSM
Раз база данных открытая и доступная любому, то логично рассмотреть вариант использовать ее самостоятельно без посредников. Это действительно возможно и в интернете хватает инструкций как это сделать, но, даже если опустить все сложности, связанные со знанием технологий, останется вопрос вычислительных мощностей. Как описано в инструкции по разворачиванию для обслуживания мировой карты требуется 32гб RAM и 1TB SSD, самая дешевая такая виртуалка обойдется в где-то 40$ в месяц. Конечно, если в распоряжении и так есть сервера, а запросы за картами будут слишком частыми, да еще и покрыть нужно только один регион, то рентабельность собственного хостинга OSM повышается. Можно арендовать и только OSM хостинг (например, Omniscale), а кодовую часть уже писать полностью свою или использовать библиотеки.