Top Related Projects
Node.js client library for Google Maps API Web Services
React.js Google Maps integration component
Companion code to the "How to Write a Google Maps React Component" Tutorial
React friendly API wrapper around MapboxGL JS
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL
Quick Overview
React Google Maps API is a comprehensive set of React components for integrating Google Maps into React applications. It provides a declarative approach to using Google Maps, making it easier for developers to implement map functionality while leveraging React's component-based architecture.
Pros
- Easy integration with React applications
- Extensive documentation and examples
- Supports TypeScript for improved type safety
- Regular updates and active community support
Cons
- Requires a Google Maps API key, which may incur costs for high-usage applications
- Learning curve for developers unfamiliar with Google Maps API
- Some advanced features may require additional configuration
Code Examples
- Basic Map Component:
import { GoogleMap, useJsApiLoader } from '@react-google-maps-api';
function MyMap() {
const { isLoaded } = useJsApiLoader({
id: 'google-map-script',
googleMapsApiKey: "YOUR_API_KEY"
});
return isLoaded ? (
<GoogleMap
mapContainerStyle={{ width: '400px', height: '400px' }}
center={{ lat: -3.745, lng: -38.523 }}
zoom={10}
/>
) : <></>
}
- Adding a Marker:
import { GoogleMap, Marker } from '@react-google-maps-api';
function MapWithMarker() {
return (
<GoogleMap
mapContainerStyle={{ width: '400px', height: '400px' }}
center={{ lat: -3.745, lng: -38.523 }}
zoom={10}
>
<Marker position={{ lat: -3.745, lng: -38.523 }} />
</GoogleMap>
);
}
- Using InfoWindow:
import { GoogleMap, Marker, InfoWindow } from '@react-google-maps-api';
function MapWithInfoWindow() {
const [isOpen, setIsOpen] = useState(false);
return (
<GoogleMap
mapContainerStyle={{ width: '400px', height: '400px' }}
center={{ lat: -3.745, lng: -38.523 }}
zoom={10}
>
<Marker position={{ lat: -3.745, lng: -38.523 }} onClick={() => setIsOpen(true)} />
{isOpen && (
<InfoWindow position={{ lat: -3.745, lng: -38.523 }} onCloseClick={() => setIsOpen(false)}>
<div>Hello, World!</div>
</InfoWindow>
)}
</GoogleMap>
);
}
Getting Started
-
Install the package:
npm install @react-google-maps/api -
Import and use the components in your React application:
import { GoogleMap, useJsApiLoader } from '@react-google-maps-api'; function App() { const { isLoaded } = useJsApiLoader({ id: 'google-map-script', googleMapsApiKey: "YOUR_API_KEY" }); return isLoaded ? ( <GoogleMap mapContainerStyle={{ width: '100%', height: '400px' }} center={{ lat: -3.745, lng: -38.523 }} zoom={10} /> ) : <></> } export default App; -
Replace "YOUR_API_KEY" with your actual Google Maps API key.
Competitor Comparisons
Node.js client library for Google Maps API Web Services
Pros of google-maps-services-js
- Official Google Maps library, ensuring better long-term support and compatibility
- Covers a wider range of Google Maps APIs, including Places, Directions, and Geocoding
- Designed for server-side use, making it suitable for Node.js applications
Cons of google-maps-services-js
- Not specifically designed for React applications, requiring additional setup for frontend use
- Lacks built-in React components, which may lead to more boilerplate code
- May require more manual handling of map rendering and interactions
Code Comparison
react-google-maps-api:
import { GoogleMap, Marker } from '@react-google-maps/api';
function MyMap() {
return (
<GoogleMap center={center} zoom={10}>
<Marker position={markerPosition} />
</GoogleMap>
);
}
google-maps-services-js:
const client = new Client({});
client
.elevation({
params: {
locations: [{ lat: 45, lng: -110 }],
key: 'YOUR_API_KEY',
},
timeout: 1000,
})
.then((r) => {
console.log(r.data.results[0].elevation);
});
The code examples highlight the different focus of each library. react-google-maps-api provides React components for easy map integration, while google-maps-services-js offers a more general-purpose API client for various Google Maps services.
React.js Google Maps integration component
Pros of react-google-maps
- More established project with a longer history and larger community
- Extensive documentation and examples available
- Supports older React versions (15+)
Cons of react-google-maps
- Less frequent updates and maintenance
- May have performance issues with large datasets or complex maps
- Some users report difficulties with TypeScript integration
Code Comparison
react-google-maps:
import { GoogleMap, Marker } from "react-google-maps"
const MyMapComponent = withScriptjs(withGoogleMap((props) =>
<GoogleMap defaultZoom={8} defaultCenter={{ lat: -34.397, lng: 150.644 }}>
{props.isMarkerShown && <Marker position={{ lat: -34.397, lng: 150.644 }} />}
</GoogleMap>
))
react-google-maps-api:
import { GoogleMap, Marker } from '@react-google-maps/api'
const MyMapComponent = () => (
<GoogleMap zoom={8} center={{ lat: -34.397, lng: 150.644 }}>
<Marker position={{ lat: -34.397, lng: 150.644 }} />
</GoogleMap>
)
The react-google-maps-api library offers a more modern and streamlined API, with better TypeScript support and improved performance. It also provides more frequent updates and active maintenance. However, react-google-maps may be preferred for projects using older React versions or those requiring extensive documentation and community resources.
Companion code to the "How to Write a Google Maps React Component" Tutorial
Pros of google-maps-react
- Simpler API with fewer components, making it easier for beginners to get started
- Lightweight package with minimal dependencies
- Better documentation and examples for basic use cases
Cons of google-maps-react
- Less actively maintained, with fewer recent updates
- Limited support for advanced Google Maps features and customizations
- Smaller community and fewer third-party resources available
Code Comparison
react-google-maps-api:
import { GoogleMap, Marker } from '@react-google-maps/api';
<GoogleMap
center={center}
zoom={10}
onLoad={onMapLoad}
options={mapOptions}
>
<Marker position={markerPosition} />
</GoogleMap>
google-maps-react:
import { Map, Marker, GoogleApiWrapper } from 'google-maps-react';
<Map
google={this.props.google}
zoom={10}
initialCenter={center}
>
<Marker position={markerPosition} />
</Map>
The code comparison shows that react-google-maps-api uses a more modular approach with separate imports for GoogleMap and Marker components. It also provides more granular control over map options and events. In contrast, google-maps-react uses a higher-level abstraction with the Map component and requires wrapping the entire component with GoogleApiWrapper.
React friendly API wrapper around MapboxGL JS
Pros of react-map-gl
- Built on Mapbox GL JS, offering high-performance vector maps and extensive customization options
- Seamless integration with other Uber Vis.gl libraries for advanced data visualization
- Strong TypeScript support and comprehensive documentation
Cons of react-map-gl
- Requires a Mapbox account and API key, which may incur costs for high-usage applications
- Limited built-in UI controls compared to Google Maps API
Code Comparison
react-map-gl:
import Map from 'react-map-gl';
<Map
mapboxAccessToken={MAPBOX_TOKEN}
initialViewState={{
longitude: -122.4,
latitude: 37.8,
zoom: 14
}}
style={{width: 600, height: 400}}
mapStyle="mapbox://styles/mapbox/streets-v9"
/>
react-google-maps-api:
import { GoogleMap, LoadScript } from '@react-google-maps/api';
<LoadScript googleMapsApiKey={YOUR_API_KEY}>
<GoogleMap
center={{ lat: 37.8, lng: -122.4 }}
zoom={14}
mapContainerStyle={{ width: '600px', height: '400px' }}
/>
</LoadScript>
Both libraries offer React components for integrating maps, but react-map-gl focuses on Mapbox GL JS, while react-google-maps-api wraps the Google Maps JavaScript API. The choice between them depends on specific project requirements, desired features, and budget considerations.
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL
Pros of mapbox-gl-js
- More customizable and flexible for advanced mapping needs
- Better performance for large datasets and complex visualizations
- Supports 3D terrain and custom layer types
Cons of mapbox-gl-js
- Steeper learning curve compared to react-google-maps-api
- Requires more setup and configuration for basic use cases
- May have higher costs for large-scale applications
Code Comparison
react-google-maps-api:
import { GoogleMap, Marker } from '@react-google-maps/api';
function MyMap() {
return (
<GoogleMap center={{ lat: 40.7128, lng: -74.0060 }} zoom={10}>
<Marker position={{ lat: 40.7128, lng: -74.0060 }} />
</GoogleMap>
);
}
mapbox-gl-js:
import mapboxgl from 'mapbox-gl';
mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [-74.0060, 40.7128],
zoom: 10
});
The code examples show that react-google-maps-api offers a more React-friendly approach with components, while mapbox-gl-js provides a lower-level API for greater control and customization. mapbox-gl-js requires more setup but allows for more advanced features and styling options.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME

@react-google-maps/api
React components and hooks for Google Maps JavaScript API
Documentation · NPM Package · Examples
Commercial License
Version 3.x and later of @react-google-maps/api is commercial software. For licensing information and pricing, visit our documentation:
- Documentation & Licensing - Complete API reference and commercial licensing details
For open-source use, please see our GitHub repository for community-supported versions.
Overview
@react-google-maps/api provides declarative React components for the Google Maps JavaScript API. Build interactive maps with markers, overlays, directions, and more using familiar React patterns.
Features
- Hooks-based API -
useJsApiLoader,useGoogleMap, and more - Full TypeScript support - Complete type definitions included
- React 19 compatible - Works with the latest React features
- Tree-shakeable - Only bundle what you use (~12kb gzipped)
- SSR friendly - Works with Next.js, Remix, and other frameworks
Quick Start
# npm
npm install @react-google-maps/api
# yarn
yarn add @react-google-maps/api
# bun
bun add @react-google-maps/api
import { GoogleMap, useJsApiLoader } from '@react-google-maps/api';
import { useMemo, useCallback, useState, type JSX } from 'react';
function Map(): JSX.Element {
const { isLoaded } = useJsApiLoader({
googleMapsApiKey: 'YOUR_API_KEY',
});
const center = useMemo(() => ({ lat: 40.7128, lng: -74.006 }), []);
const containerStyle = useMemo(() => ({ width: '100%', height: '400px' }), []);
if (!isLoaded) return <div>Loading...</div>;
return (
<GoogleMap
mapContainerStyle={containerStyle}
center={center}
zoom={12}
/>
);
}
Documentation
For full API documentation and examples, see:
- Package README - Detailed API docs and examples
- Live Documentation - Interactive component explorer
Community
- Slack Channel - Get help and discuss
- GitHub Issues - Report bugs and request features
Contributing
We welcome contributions! See our contributing guide to get started.
Development Setup
# Clone the repository
git clone https://github.com/JustFly1984/react-google-maps-api.git
cd react-google-maps-api
# Install dependencies
bun install
# Set up workspace
bun run bootstrap
Requirements
- Node.js 18+
- Bun
- Google Maps API Key from Google Cloud Console
Support
If you find this library useful, consider sponsoring the project.
Top Related Projects
Node.js client library for Google Maps API Web Services
React.js Google Maps integration component
Companion code to the "How to Write a Google Maps React Component" Tutorial
React friendly API wrapper around MapboxGL JS
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot