diff --git a/package-lock.json b/package-lock.json
index c90af1f3..7aea5cf1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8356,6 +8356,11 @@
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
+ },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
diff --git a/package.json b/package.json
index 6fe3fd18..71bad716 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"lodash.capitalize": "^4.2.1",
"lodash.clamp": "^4.0.3",
"lodash.clonedeep": "^4.5.0",
+ "lodash.get": "^4.4.2",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"mapbox-gl": "^0.53.1",
diff --git a/src/components/App.jsx b/src/components/App.jsx
index f0573de3..cc598f5c 100644
--- a/src/components/App.jsx
+++ b/src/components/App.jsx
@@ -2,6 +2,7 @@ import autoBind from 'react-autobind';
import React from 'react'
import cloneDeep from 'lodash.clonedeep'
import clamp from 'lodash.clamp'
+import get from 'lodash.get'
import {arrayMove} from 'react-sortable-hoc'
import url from 'url'
@@ -279,6 +280,27 @@ export default class App extends React.Component {
})
}
+ onChangeMetadataProperty = (property, value) => {
+ // If we're changing renderer reset the map state.
+ if (
+ property === 'maputnik:renderer' &&
+ value !== get(this.state.mapStyle, ['metadata', 'maputnik:renderer'], 'mbgljs')
+ ) {
+ this.setState({
+ mapState: 'map'
+ });
+ }
+
+ const changedStyle = {
+ ...this.state.mapStyle,
+ metadata: {
+ ...this.state.mapStyle.metadata,
+ [property]: value
+ }
+ }
+ this.onStyleChanged(changedStyle)
+ }
+
onStyleChanged = (newStyle, save=true) => {
const errors = validate(newStyle, latest)
@@ -634,6 +656,7 @@ export default class App extends React.Component {
@@ -86,7 +77,7 @@ class SettingsModal extends React.Component {
@@ -94,7 +85,7 @@ class SettingsModal extends React.Component {
@@ -106,7 +97,7 @@ class SettingsModal extends React.Component {
['ol', 'Open Layers (experimental)'],
]}
value={metadata['maputnik:renderer'] || 'mbgljs'}
- onChange={this.changeMetadataProperty.bind(this, 'maputnik:renderer')}
+ onChange={onChangeMetadataProperty.bind(this, 'maputnik:renderer')}
/>