Интеграция картографических сервисов в React

Руководство по React Mapbox

В течение многих лет в индустрии разработки ведутся нескончаемые споры о том, какой поставщик карт лучше всего. Давайте посмотрим, кто победит в игре «Game of Map Providers».

Google Maps SDK долгое время оставался лидером из-за своей надежности, но ситуация начала меняться, поскольку цена была намного выше, чем у конкурентов, и не было такого же уровня настраиваемости, как Mapbox или бесплатный Leaflet.

Когда вы выбираете картографический сервис, вы должны учитывать несколько факторов:

  • цена ($ / загрузка карты или запрос API)
  • надежность (насколько точен и надежен сервис)
  • настраиваемость (доступный уровень персонализации, цветовая палитра или маркеры)
  • опыт разработчика (насколько легко интегрировать и развивать в приложении)
  • другие сервисы, такие как поиск (также известный как геокодирование), навигация и другие.

1. Почему Mapbox?

Ранее в этом году я разработал полнофункциональное приложение для повышения осведомленности о краже велосипедов с помощью Mapbox и React, и мне понравилось, насколько оно простое в использовании и настройке. Проверьте это на bike-theft-map.bikmo.com.

В море приложений, которые в основном используют Google Maps, вы можете легко выделиться, воспользовавшись многочисленными настраиваемыми функциями Mapbox через весь спектр услуг.

Используя Mapbox Studio, вы можете создать карту темного режима своей мечты и даже интегрировать цветовую палитру определенного бренда до цвета листьев на деревьях (вроде как).

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

2. Что мы строим?

Мы создадим приложение NextJS для ветеринарной клиники Нью-Йорка, с его помощью люди смогут просматривать маркеры для каждого места на карте и, нажав на него, заполнить форму с данными о своем питомце перед тем, как отнести его туда.

3. Создание собственного стиля карты.

После создания учетной записи мы можем посетить Mapbox Studio и создать новый стиль, нажав кнопку Новый стиль.

Выберите базовый стиль, который мы затем сможем настроить с помощью фирменных цветов нашей ветеринарной клиники.

Давайте выберем монохромный стиль, так как он требует меньше всего времени на настройку.

В меню левой боковой панели под цветами мы можем настроить цвет (# 00A896).

Чтобы опубликовать изменения, мы должны нажать крошечную кнопку «Опубликовать» в правом верхнем углу. Теперь все, что нам нужно, это URL-адрес стиля для использования на нашем веб-сайте, который мы можем найти в правом верхнем углу.

4. Mapbox в React

Поскольку мы создаем это приложение на NextJS, мы можем использовать либо официальную библиотеку Vanilla JS Mapbox GL JS, либо отличный React Wrapper react-map-gl. Я воспользуюсь последним, так как он отлично работает в нашем случае.

Давайте создадим новый проект NextJS и установим зависимости:

Давайте сначала расширим компоненты, связанные с картой, из react-map-gl и создадим несколько пользовательских в папке components /.

В components / pin / index.js мы добавляем пользовательский значок булавки карты внутри маркера (отметьте этот CodeSandbox):

В components / marker / index.js мы расширяем компонент-маркер:

И, наконец, в components / popup / index.js для всплывающего окна формы

Теперь мы можем продолжить, добавив карту и бизнес-логику для отображения маркеров и всплывающих окон. Это будет включать минимальный стиль и состояние области просмотра карты, чтобы его можно было легко обновить для использования API для маркеров или отправки формы.

И это все, что нам нужно для разработки приложения React на основе карт с MapBox. Есть еще много вещей, которые можно сделать с помощью этого замечательного инструмента, например, тепловые карты, переходы карт, анимация GeoJSON и другие.

Если вы хотите проверить этот демонстрационный проект (замените mapboxApiAccessToken и mapStyle в index.js), вот вам CodeSandbox.

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

Надеюсь, вам понравилось это короткое руководство по интеграции картографических сервисов с Mapbox и NextJS, и я буду рад, если вы поставите ему!

Другие мои работы можно найти на alexstreza.dev.

Больше контента на plainenglish.io