top of page

Using Mapbox with React #1: Initialize a Mapbox React Component

Mapping solutions are essential in today’s app and web development landscape, offering extensive capabilities for everything from location tracking to interactive travel apps. Among the plethora of tools available, Mapbox stands out for its powerful, customizable maps and extensive suite of location data services. When combined with React, a popular JavaScript library for building user interfaces, developers can create highly responsive and interactive mapping applications. In this blog, we’ll explore how to integrate Mapbox with React, diving into the basics, best practices, and a step-by-step guide to get you started.


What is Mapbox?

Mapbox is a location data platform that provides mapping, navigation, and location search functionality to developers. It offers highly customizable maps that can be styled in Mapbox Studio and controlled via its APIs and SDKs. Whether you need a simple map with custom markers or complex data visualization over geographical areas, Mapbox has the tools and flexibility needed to tailor your maps to specific requirements.


Why Use Mapbox with React?

React’s component-based architecture makes it an excellent choice for building dynamic user interfaces. Integrating Mapbox with React allows developers to leverage React’s efficient update mechanisms for building interactive and performant map-driven applications. React components can encapsulate Mapbox functionalities, making the code more organized, reusable, and easier to manage.


Setting Up Your Project

Before diving into the code, you need to set up a React project if you don’t already have one. This is my preference, but I like to use React with Vite with the following commands:

yarn create vite my-mapbox-app --template react-ts
cd my-mapbox-app
yarn
yarn dev

Next, you need to install the Mapbox GL JS library, which is Mapbox's WebGL-powered library for rendering interactive maps.

yarn add mapbox-gl

You might noted, that I used a typescript template when initializing the React app. We should ensure that you have the Mapbox GL types installed for TypeScript.

yarn add --dev @types/mapbox-gl

Creating a Basic Map Component

Here’s how you can create a simple React component to display a Mapbox map.

1. Setup your Mapbox Access Token

Sign up for a Mapbox account at Mapbox and obtain your access token. For security, it's best practice to store this token in your environment variables or a configuration file.


2. Create the Map Component

Create a new component called `MapboxMap.tsx`. This component will handle the initialization and rendering of the Mapbox map.


import { useEffect, useRef } from "react";
import "mapbox-gl/dist/mapbox-gl.css";
import mapboxgl from "mapbox-gl";

// Set your Mapbox access token
mapboxgl.accessToken = "YOUR_ACCESS_TOKEN;

const MapboxMap = () => {
  const mapContainerRef = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (mapContainerRef.current) {
      const map = new mapboxgl.Map({
        container: mapContainerRef.current,
        style: "mapbox://styles/mapbox/streets-v11",
        center: [-74.006, 40.7128],
        zoom: 7
      });

      // Cleanup the map instance on component unmount
      return () => {
        map.remove();
      };
    }
  }, []);

  return (<div ref={mapContainerRef} style={{ height: "800px", width: "100%" }} />);
};

export default MapboxMap;

3. Include the Component in Your App

Now, include the `MapboxMap` component in your main app component (usually `App.tsx`).

import MapboxMap from "./components/MapboxMap.tsx";

function App() {
  return (
    <div>
      <h1>My Mapbox App</h1>
      <MapboxMap />
    </div>
  );
}

export default App;

4. Let's see what we've got

Mapbox with React result

Conclusion

Combining Mapbox with React opens up a world of possibilities for developers looking to integrate sophisticated maps into their applications.

The guide above provides a simple first step into this integration. In upcoming blogs, we will delve into more advanced features that can enhance your maps, such as adding popups, markers, and interactive data layers.

Whether you’re working on a personal project or a large-scale enterprise application, the integration of Mapbox and React is a powerful tool in any developer’s arsenal. Stay tuned for more!

The source code of this guide can be found here: https://github.com/atwarevn/react-mapbox-blog


12 views0 comments
bottom of page