diff --git a/example/src/App.js b/example/src/App.js
index 73ac6678..f2b557b2 100644
--- a/example/src/App.js
+++ b/example/src/App.js
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import styled from 'styled-components';
-import GoogleMapReact from 'google-map-react'
+import GoogleMapReact from 'google-map-react';
// import 'google-map-react/dist/index.css'
import LOS_ANGELES_CENTER from './const/la_center';
@@ -14,17 +14,17 @@ const Wrapper = styled.main`
`;
const App = () => {
- const [places, setPlaces] = useState([])
+ const [places, setPlaces] = useState([]);
const fetchPlaces = async () => {
fetch('places.json')
- .then((response) => response.json())
- .then((data) => setPlaces(data.results))
- }
+ .then((response) => response.json())
+ .then((data) => setPlaces(data.results));
+ };
useEffect(() => {
fetchPlaces();
- }, [])
+ }, []);
if (!places || places.length === 0) {
return null;
@@ -32,21 +32,19 @@ const App = () => {
return (
-
+
{places.map((place) => (
))}
- )
-}
+ );
+};
-export default App
+export default App;
diff --git a/example/src/components/Marker.js b/example/src/components/Marker.js
index 09af5e4a..4549bc8b 100644
--- a/example/src/components/Marker.js
+++ b/example/src/components/Marker.js
@@ -3,28 +3,19 @@ import PropTypes from 'prop-types';
import styled from 'styled-components';
const Wrapper = styled.div`
- position: absolute;
- top: 50%;
- left: 50%;
width: 18px;
height: 18px;
background-color: #000;
border: 2px solid #fff;
border-radius: 100%;
user-select: none;
- transform: translate(-50%, -50%);
cursor: ${(props) => (props.onClick ? 'pointer' : 'default')};
&:hover {
z-index: 1;
}
`;
-const Marker = ({ text, onClick }) => (
-
-);
+const Marker = ({ text, onClick }) => ;
Marker.defaultProps = {
onClick: null,
diff --git a/src/google_map_markers.js b/src/google_map_markers.js
index e2fbb666..254f7fe4 100644
--- a/src/google_map_markers.js
+++ b/src/google_map_markers.js
@@ -16,14 +16,25 @@ const mainStyle = {
};
const style = {
- width: 0,
- height: 0,
left: 0,
top: 0,
backgroundColor: 'transparent',
position: 'absolute',
};
+const markerAxisX = {
+ left: 0,
+ center: '-50%',
+ right: '-100%',
+};
+
+const markerAxisY = {
+ top: 0,
+ center: '-50%',
+ bottom: '-100%',
+};
+const isProduction = process.env.NODE_ENV === 'production';
+
export default class GoogleMapMarkers extends Component {
/* eslint-disable react/forbid-prop-types */
static propTypes = {
@@ -320,10 +331,36 @@ export default class GoogleMapMarkers extends Component {
...latLng,
};
+ const markerPosition = child.props.markerPosition || 'center bottom';
+
+ if (typeof markerPosition === 'string') {
+ [this.markerPosX, this.markerPosY] = markerPosition.trim().split(' ');
+
+ if (!markerAxisX[this.markerPosX] && !isProduction)
+ console.error(
+ `Invalid x value passed for markerPosition, expected strings left,center or right`
+ );
+
+ if (!markerAxisY[this.markerPosY] && !isProduction)
+ console.error(
+ `Invalid y value passed for markerPosition, expected strings top,center or bottom`
+ );
+ } else if (!isProduction) {
+ console.error(
+ `Warning: Failed prop type: Invalid prop markerPosition of ${typeof markerPosition} supplied, expected string`
+ );
+ }
+
return (
{React.cloneElement(child, {