diff --git a/docs/components/Leaflet.tsx b/docs/components/Leaflet.tsx
deleted file mode 100644
index c3c55053..00000000
--- a/docs/components/Leaflet.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import React, { ReactElement, useRef, useEffect } from 'react';
-import 'leaflet/dist/leaflet.css';
-import { Map, TileLayer } from 'react-leaflet';
-
-import '../../assets/css/leaflet.css';
-import useConfigureLeaflet from '../hooks/useConfigureLeaflet';
-import * as providers from '../../src/providers';
-import GeoSearchControl from '../../src/leafletControl';
-import styles from './Leaflet.module.css';
-
-import { MapProps } from './Map';
-
-const providerMap = {
- Bing: new providers.BingProvider({
- params: { key: process.env.GATSBY_BING_API_KEY },
- }),
- Esri: new providers.EsriProvider(),
- Google: new providers.GoogleProvider({
- params: { key: process.env.GATSBY_GOOGLE_API_KEY },
- }),
- LocationIQ: new providers.LocationIQProvider({
- params: { key: process.env.GATSBY_LOCATIONIQ_API_KEY },
- }),
- OpenCage: new providers.OpenCageProvider({
- params: { key: process.env.GATSBY_OPENCAGE_API_KEY },
- }),
- OpenStreetMap: new providers.OpenStreetMapProvider(),
-};
-
-function Leaflet(props: MapProps): ReactElement {
- const { provider = 'OpenStreetMap' } = props;
-
- const ref = useRef(null);
- const control = useRef(null);
-
- const { viewport } = useConfigureLeaflet();
-
- useEffect(() => {
- if (ref.current) {
- if (!providerMap[provider]) {
- throw new Error('unknown provider');
- }
-
- control.current = GeoSearchControl({
- style: 'bar',
- provider: providerMap[provider],
- });
-
- ref.current.leafletElement.addControl(control.current);
- }
-
- return () => {
- if (control.current) {
- ref.current.leafletElement.removeControl(control.current);
- }
- };
- }, [ref.current, control.current, provider]);
-
- // I'm not sure what's causing it, but the className from the outer
- // div is being removed. Hence the useless wrapper
- return (
-
-
-
- );
-}
-
-export default Leaflet;
diff --git a/docs/components/Leaflet.module.css b/docs/components/Map.module.css
similarity index 100%
rename from docs/components/Leaflet.module.css
rename to docs/components/Map.module.css
diff --git a/docs/components/Map.tsx b/docs/components/Map.tsx
index e7f86c5e..5142ddb5 100644
--- a/docs/components/Map.tsx
+++ b/docs/components/Map.tsx
@@ -1,17 +1,77 @@
-import React, { ReactElement } from 'react';
-import Leaflet from './Leaflet';
+import React, { ReactElement, useRef, useEffect } from 'react';
+import 'leaflet/dist/leaflet.css';
+import { Map as BaseMap, TileLayer } from 'react-leaflet';
+
+import '../../assets/css/leaflet.css';
+import useConfigureLeaflet from '../hooks/useConfigureLeaflet';
+import * as providers from '../../src/providers';
+import GeoSearchControl from '../../src/leafletControl';
+import styles from './Map.module.css';
export interface MapProps {
provider?: 'OpenStreetMap' | 'Google' | 'Bing';
providerOptions: any;
}
+const providerMap = {
+ Bing: new providers.BingProvider({
+ params: { key: process.env.GATSBY_BING_API_KEY },
+ }),
+ Esri: new providers.EsriProvider(),
+ Google: new providers.GoogleProvider({
+ params: { key: process.env.GATSBY_GOOGLE_API_KEY },
+ }),
+ LocationIQ: new providers.LocationIQProvider({
+ params: { key: process.env.GATSBY_LOCATIONIQ_API_KEY },
+ }),
+ OpenCage: new providers.OpenCageProvider({
+ params: { key: process.env.GATSBY_OPENCAGE_API_KEY },
+ }),
+ OpenStreetMap: new providers.OpenStreetMapProvider(),
+};
+
function Map(props: MapProps): ReactElement {
+ const { provider = 'OpenStreetMap' } = props;
+
+ const ref = useRef(null);
+ const control = useRef(null);
+
+ const { viewport } = useConfigureLeaflet();
+
+ useEffect(() => {
+ if (ref.current) {
+ if (!providerMap[provider]) {
+ throw new Error('unknown provider');
+ }
+
+ control.current = GeoSearchControl({
+ style: 'bar',
+ provider: providerMap[provider],
+ });
+
+ ref.current.leafletElement.addControl(control.current);
+ }
+
+ return () => {
+ if (control.current) {
+ ref.current.leafletElement.removeControl(control.current);
+ }
+ };
+ }, [ref.current, control.current, provider]);
+
if (typeof window === 'undefined') {
return loading...
;
}
- return ;
+ // I'm not sure what's causing it, but the className from the outer
+ // div is being removed. Hence the useless wrapper
+ return (
+
+
+
+
+
+ );
}
export default Map;