-

сайт небольшого сообщества специалистов в сфере IT;
здесь мы делимся экспертизой и наработками

Интерактивные карты на веб-сайт

Вкратце Интерактивные карты для сайта - это совокупность данных из разных источников, у каждого сервиса под каждый регион источники разные. Есть таблица-сравнение сервисов.

У разработчиков веб-сайтов зачастую возникает потребность отобразить карту на сайте, да еще чтобы пользователь мог ее "потрогать" - использовать zoom и возможность перемещать карту. Чаще всего карту подключают на лэндингах каких-нибудь предприятий для отображения их локации или даже нескольких локаций (например, показать все магазины одной сети в городе).

Самое популярное решение для мировой динамической карты на сайте - это Google Maps. В СНГ достаточно популярны (или даже популярнее) Яндекс Карты и сейчас еще набирает популярность сервис 2GIS. Главным конкурентом гуглу во всем мире, пожалуй, является OpenStreetMap, но в виде разных сервисов-оберток.

Открытая база картографических данных

OpenStreetMap (OSM) - это википедия в сфере картографии. Каждый человек может внести правку на карту, например, детально отрисовав свой район, в котором он знает всё до метра. В свою очередь Google Maps в качестве основы для карт использует снимки со спутника. OpenStreetMap представляет из себя не полноценный аналог Google Maps, по большей части это бесплатная база картографических данных, которую может использовать каждый, но для этого необходимо развернуть инфраструктуру. Некоторые компании поднимают свои сервера и используют OSM для собственных нужд, а некоторые разворачивают сервисы для общего доступа, которые являются альтернативами Google Maps API по предоставляемым услугам. На сайте OSM есть даже детальная и очень внушительная таблица сервисов, которые используют их данные.

OpenStreetMap сам по себе представляет хранилище карточных данных, его API предоставляет сообществу возможности вносить правки и выкачать базу. Для того, чтобы данные из этой карты стали интерактивной картинкой на сайте их еще необходимо обработать, кэшировать и отдавать пользователям, что требует достаточно серьезных вычислительных мощностей, отсюда следует, что любой провайдер карточных данных как минимум захочет окупить затраты по их предоставлению.

Различие сервисов

Интерактивная карта как правило включает в себя данные из разных источников. Очень наглядный пример о том, сколько под капотом источников данных есть на странице правообладателей у Яндекса. Проделав такую большую работу по сбору и обработке данных, в теории, Яндекс могли бы поделиться данными с сообществом (OpenStreetMap), но лиценизонные ограничения не позволяют им это сделать, о чем представитель Яндекса ответила при обращении.

Анализ сервисов

Пример с Яндексом показывает, что интерактивная карта - это совокупность данных из разных источников разных стран, объединение этих данных в одну общую мировую базу невозможно (или крааайне сложно) как минимум по лицензионным причинам. Отсюда следует вывод, что для отображения карты на сайте нет универсального сервиса, который подойдет всем, поэтому придется выбирать. Каквам команда на основе экспертизы наших участников провела анализ некоторых сервисов. Даже если вам не подойдет ни одно из решений, можете взять за основу подход и критерии отбора и провести анализ тех сервисов, что доступны для вашего региона или соответсвуют вашим нуждам.

Google MapsMapboxGeoapifyYandex MapsStadia maps
staticinteractiveembedstaticinteractivestaticinteractivestaticinteractivestaticinteractive
Цена за 1к запросов2$7$бесплатно1$5$~0.17$Необходимо связываться, чтобы узнать цену0.02$
Оплатапо фактубесплатнопо факту49$ в месяц-20$ в месяц
Бесплатно100к запросов в месяц28.5к запросов в месяцполностью, но нужен billing account50к запросов в месяц3к запросов в день25к запросов в деньнет200к запросов в месяц
Свой маркер на картеесть1 без кастомизацииестьвыбор иконок из каталогаестьесть
Возможность менять стилиестьнетестьвыбор из заготовленных темнетвыбор из заготовленных тем
Источник данных спутниковые данные + своиOSMOSMмножествоOSM, Natural Earth
Google Maps
staticinteractiveembed
Цена за 1к запросов2$7$бесплатно
Оплатапо фактубесплатно
Бесплатно100к запросов в месяц28.5к запросов в месяцполностью, но нужен billing account
Свой маркер на картеесть1 без кастомизации
Возможность менять стилиестьнет
Источник данных спутниковые данные + свои
Mapbox
staticinteractive
Цена за 1к запросов1$5$
Оплатапо факту
Бесплатно50к запросов в месяц
Свой маркер на картеесть
Возможность менять стилиесть
Источник данных OSM
Geoapify
staticinteractive
Цена за 1к запросов~0.17$
Оплата49$ в месяц
Бесплатно3к запросов в день
Свой маркер на картевыбор иконок из каталога
Возможность менять стиливыбор из заготовленных тем
Источник данных OSM
Yandex Maps
staticinteractive
Цена за 1к запросовНеобходимо связываться, чтобы узнать цену
Оплата-
Бесплатно25к запросов в день
Свой маркер на картеесть
Возможность менять стилинет
Источник данных множество
Stadia maps
staticinteractive
Цена за 1к запросов0.02$
Оплата20$ в месяц
Бесплатнонет200к запросов в месяц
Свой маркер на картеесть
Возможность менять стиливыбор из заготовленных тем
Источник данных OSM, Natural Earth

Собственный хостинг для OSM

Раз база данных открытая и доступная любому, то логично рассмотреть вариант использовать ее самостоятельно без посредников. Это действительно возможно и в интернете хватает инструкций как это сделать, но, даже если опустить все сложности, связанные со знанием технологий, останется вопрос вычислительных мощностей. Как описано в инструкции по разворачиванию для обслуживания мировой карты требуется 32гб RAM и 1TB SSD, самая дешевая такая виртуалка обойдется в где-то 40$ в месяц. Конечно, если в распоряжении и так есть сервера, а запросы за картами будут слишком частыми, да еще и покрыть нужно только один регион, то рентабельность собственного хостинга OSM повышается. Можно арендовать и только OSM хостинг (например, Omniscale), а кодовую часть уже писать полностью свою или использовать библиотеки.