Gatsby Google Maps

Gatsby Google Maps

by John Vincent


Posted on September 20, 2019


Let's discuss implementing Google Maps with Gatsby.

Install

npm i --save google-map-react

Implementation

GoogleMaps.jsx

import React from 'react';
import { graphql, useStaticQuery } from 'gatsby';

import GoogleMapReact from 'google-map-react';

const Marker = () => (
	<>
		<div className="pin" />
		<div className="pulse" />
	</>
);

const GoogleMaps = () => {
	const data = useStaticQuery(graphql`
		query {
			site {
				siteMetadata {
					other {
						googleMapsKey
					}
				}
			}
		}
	`);
	const { googleMapsKey } = data.site.siteMetadata.other;

	const mapConfig = {
		center: {
			lat: 40.757,
			lng: -73.99,
		},
		zoom: 11,
	};

	return (
		<div id="google-map-section" style={{ height: '100vh', width: '100%' }}>
			<GoogleMapReact
				bootstrapURLKeys={{ key: googleMapsKey }}
				defaultCenter={mapConfig.center}
				defaultZoom={mapConfig.zoom}
			>
				<Marker lat={mapConfig.center.lat} lng={mapConfig.center.lng} />
			</GoogleMapReact>
		</div>
	);
};

export default GoogleMaps;