diff --git a/dist/components/Marker.js b/dist/components/Marker.js index 7cc80544..bdbe3adf 100644 --- a/dist/components/Marker.js +++ b/dist/components/Marker.js @@ -135,7 +135,7 @@ }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps) { - if (this.props.map !== prevProps.map || this.props.position !== prevProps.position || this.props.icon !== prevProps.icon) { + if (this.props.map !== prevProps.map || (this.props.position && prevProps.position ? this.props.position.lat !== prevProps.position.lat || this.props.position.lng !== prevProps.position.lng : this.props.position !== prevProps.position) || this.props.icon !== prevProps.icon) { if (this.marker) { this.marker.setMap(null); } diff --git a/src/components/Marker.js b/src/components/Marker.js index 0b233241..5cde2119 100644 --- a/src/components/Marker.js +++ b/src/components/Marker.js @@ -2,6 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { camelize } from '../lib/String' +import { verifyMarkerPosition } from '../lib/verifyMarkerPosition' const evtNames = [ 'click', @@ -35,9 +36,9 @@ export class Marker extends React.Component { } componentDidUpdate(prevProps) { - if ((this.props.map !== prevProps.map) || - (this.props.position !== prevProps.position) || - (this.props.icon !== prevProps.icon)) { + if (this.props.map !== prevProps.map || + this.props.icon !== prevProps.icon || + verifyMarkerPosition(this.props.position, prevProps.position)) { if (this.marker) { this.marker.setMap(null); } diff --git a/src/lib/verifyMarkerPosition.js b/src/lib/verifyMarkerPosition.js new file mode 100644 index 00000000..11ae30a7 --- /dev/null +++ b/src/lib/verifyMarkerPosition.js @@ -0,0 +1,6 @@ +export function verifyMarkerPosition(currentPosition, prevPosition) { + if(currentPosition && prevPosition) { + return currentPosition.lat !== prevPosition.lat || currentPosition.lng !== prevPosition.lng; + } + return false; +}