Что случилось с Google Maps?
С 11 июня 2018 года Google взимает плату со всех за свой сервис Google Maps. На данный момент каждый также получает кредит в размере 200 долларов в месяц для использования этих услуг, поэтому, если вы не превысите его, все будет в порядке и ваши деньги в безопасности. Однако независимо от ситуации вам все равно необходимо ввести данные своей кредитной карты, чтобы API Карт работал с вашим ключом API.
Эта ситуация, конечно, может измениться (я где-то читал, что в июле 2019 года кредит в 200 долларов может быть отозван, но не могу подтвердить 100%), и она, вероятно, изменится в худшую сторону, чем в лучшую, но ... скрестив пальцы, может быть, Google последует по стопам Amazon Web Services (AWS) и будут платить все меньше и меньше за свои услуги? Кто знает? ;)
Подводя итог, на данный момент:
- Если вы используете их API Карт Google и у вас огромный трафик (на сумму более 200 долларов), вы платите!
- Если вы используете более продвинутые функции, такие как стилизованные карты, просмотр улиц и / или геолокацию, вы платите еще больше!
Более подробную информацию о ценах на Карты Google можно найти здесь.
Доступные альтернативы
Я знаю, вы только начали думать ... а как насчет других картографических сервисов, доступных на рынке? Как они соотносятся с предложениями Google? Хммм ... конкуренция есть, у них тоже есть хорошие карты, но ... вы попадете в такую же ситуацию (более или менее). Возможно, это изменится, если Google перестанет предоставлять бонус в 200 долларов, но на данный момент у конкурентов есть довольно похожие предложения:
Apple MapKit JS
Это библиотека JavaScript, которая позволяет использовать Apple Maps на вашем веб-сайте. На момент написания этой статьи у них есть бесплатный дневной лимит в 250 тыс. Просмотров карт и 25 тыс. Вызовов сервисов (что очень много), но узнать больше об их модели ценообразования в целом сложно, а их API все еще находится в стадии бета-тестирования.
Ссылка на MapKit JS.
Карты Bing
Предложение Microsoft на рынке карт похоже на предложение Google, но с более простой схемой ценообразования. Вы можете совершать 125 тысяч бесплатных звонков в год на их API. Это немного, но для небольших сайтов должно быть достаточно.
Ссылка на Bing Maps.
OpenStreetMap
Это тема этого сообщения в блоге, оно в некоторой степени бесплатное. Люди, стоящие за OSM, подразумевают под этим то, что данные бесплатны, а обслуживание данных может быть нет. Если у вас небольшой веб-сайт без большого трафика, скорее всего, у вас все будет хорошо, и вы сможете свободно им пользоваться. Однако, если вы собираетесь генерировать большой трафик, вас могут отключить, и в этом случае вы должны обслуживать данные из своей собственной инфраструктуры (метод, который я опишу ниже).
С политикой использования API можно ознакомиться здесь.
Как работает OpenStreetMap
Если вы решите перейти на использование OpenStreetMap, у вас есть два варианта:
- вы можете использовать карты прямо с их сервера
- вы можете настроить свой собственный тайловый сервер на месте
Я не собираюсь здесь говорить о первом варианте, вы можете найти некоторую информацию об использовании OpenStreetMap напрямую с библиотекой JavaScript в разделе «Настройка выбранной библиотеки JavaScript». Ниже приведены инструкции о том, как самостоятельно настроить тайловый сервер.
Теперь главный вопрос: бесплатное ли решение OpenStreetMap? Ну, в некотором смысле да, потому что данные, которые вы используете, находятся в свободном доступе, но, в конце концов, вам нужно как-то заплатить за ресурсы сервера, которые вы используете для обслуживания этих данных. Вдобавок к этому вам нужно добавить стоимость обслуживания сервера, особенно если вы хотите, чтобы ваши карты были в актуальном состоянии.
Настройка внутреннего сервера OpenStreetMap
Если ни одна из бесплатных альтернатив вам не подходит, вы все равно можете запустить собственный сервер фрагментов карты. Благодаря тому, что один из тайловых серверов доступен как образ Docker, благодаря парню по имени Александр Овервоорд, весь процесс довольно прост.
Большая часть информации о настройке образа Docker приведена на странице проекта на сайте Github.
Вам понадобятся два тома Docker для хранения ваших данных OpenStreetMap, а также плитки, ранее запрошенные вашими службами (хранение ранее визуализированных плиток на отдельном томе сохранит ваши данные между перезапусками контейнера):
Также вам необходимо скачать плитки, они вам нужны в формате * .osm.pbf. Вы можете найти их на странице geofabric.de.
Загрузите плитки для интересующего вас региона и импортируйте их в базу данных Postgres:
В этом руководстве я буду использовать данные для Мальты, размер которых составляет всего 3,8 МБ. Если у вас нет overv/openstreetmap-tile-server:latest
изображения, эта операция может занять довольно много времени.
После завершения импорта вы можете запустить свой собственный тайловый сервер:
где openstreetmap-rendered-tile - это объем для уже визуализированных тайлов, а openstreetmap-data - это том, в котором хранится база данных postgresql.
Чтобы проверить, правильно ли работает сервер, вы должны попытаться получить доступ к любой плитке, доступной для используемого вами набора данных. Чтобы узнать правильные значения x, y, z, проще всего перейти на исходный openstreetmap.org, найти Мальту и в консоли разработчика вашего браузера найти адреса плиток во время их загрузки, например. Я выбрал один, который выглядит так:
Https://b.tile.openstreetmap.org/12/2213/1610.png
При загрузке этого веб-адреса.
Чтобы найти тот же тайл на вашем персональном сервере тайлов карты, вам нужно будет перейти в то же место здесь, если вы запустили пример на порту 80.
Настройка выбранной библиотеки JavaScript
Есть несколько вариантов выбора, когда дело доходит до выбора библиотеки JavaScript, наиболее подходящей для ваших нужд. Одним из самых популярных решений является LeafletJS, который, по всей видимости, можно использовать и с ReactJS.
Еще один, работающий с ReactJS, - это компонент Pigeon Maps, доступный здесь.
Оба они легко модифицируются, чтобы использовать ваш собственный сервер тайловых карт.
Листовки Карты
Загрузите буклет с ReactJS здесь и выполните следующие команды для сборки и запуска демонстрационного приложения:
Теперь, чтобы использовать свой собственный сервер плиток, измените компонент TileLayer, чтобы использовать URL-адрес вашего собственного решения:
После того, как изменения будут внесены и вы обновите страницу в браузере, вы должны увидеть новую карту, созданную с использованием плиток с вашего сервера. Если вы загрузили плитки только для определенной области (как я сделал для Мальты), вы не сможете увидеть какие-либо детали других областей. Если ваша карта была центрирована в другом месте, вам нужно будет прокрутить карту, чтобы найти регион, для которого вы загрузили карты. После этого все работает отлично.
Карты голубей
Скачать отсюда. Перейдите в папку demo и выполните следующие команды:
После того, как все установлено и сервер запущен, вы можете получить доступ к странице по адресу localhost: 4040
Теперь, чтобы изменить компонент Pigeon Maps для использования вашего собственного сервера тайловых карт, вам нужно изменить следующее в файле demo.js:
to:
Как и в случае с Leaflet Maps, если вы загрузили данные только для какой-то определенной области, вам нужно будет сначала найти их на земном шаре, после того как вы найдете их, вы сможете просматривать и видеть гораздо более подробные плитки.
Как видите, настроить собственный сервер фрагментов карты несложно, и если у вас есть инфраструктура для запуска контейнеров докеров, это довольно быстро и легко. Если вы решите пойти по этому маршруту, не забывайте время от времени обновлять данные карты.
Ищете экспертов по Scala и Java?
Мы заставим технологии работать на ваш бизнес. Посмотреть проекты, которые мы успешно реализовали.