Skip to main content

Style JSON

Change style of a MapView on the fly.

import React from 'react';
import { Text, StyleSheet } from 'react-native';
import { MapView, Camera, Style, StyleURL } from '@rnmapbox/maps';

import StyleJsonExample from '../../assets/style-json-example.json';
import StyleJsonExample2 from '../../assets/style-json-example2.json';
import Bubble from '../common/Bubble';

const styles = StyleSheet.create({
map: {
flex: 1,
},
});

const defaultCamera = {
centerCoordinate: [-78.54382, 40.446947],
zoomLevel: 3,
minZoomLevel: 3,
};

class StyleJson extends React.Component {
state = {
showAltStyle: false,
};

onPress = () => {
this.setState({
showAltStyle: !this.state.showAltStyle,
});
};

render() {
return (
<>
<MapView styleURL={StyleURL.Light} style={styles.map}>
<Camera defaultSettings={defaultCamera} />
<Style
json={
this.state.showAltStyle ? StyleJsonExample2 : StyleJsonExample
}
/>
</MapView>
<Bubble onPress={this.onPress}>
<Text>{this.state.showAltStyle ? 'Style 2' : 'Style 1'}</Text>
</Bubble>
</>
);
}
}

export default StyleJson;


StyleJson.png}