Skip to main content

Two Map Views

Display two map views side by side

import React from 'react';
import { MapView, ShapeSource, FillLayer, StyleURL } from '@rnmapbox/maps';

import sheet from '../../styles/sheet';
import smileyFaceGeoJSON from '../../assets/smiley_face.json';

const layerStyles = {
smileyFaceLight: {
fillAntialias: true,
fillColor: 'white',
fillOutlineColor: 'rgba(255, 255, 255, 0.84)',
},
smileyFaceDark: {
fillAntialias: true,
fillColor: 'black',
fillOutlineColor: 'rgba(0, 0, 0, 0.84)',
},
};

class TwoByTwo extends React.Component {
renderMap(styleURL, layerStyle) {
return (
<MapView
zoomLevel={2}
centerCoordinate={[-35.15165038, 40.6235728]}
onSetCameraComplete={this.onUpdateZoomLevel}
ref={(ref) => {
this.map = ref;
}}
style={sheet.matchParent}
styleURL={styleURL}
>
<ShapeSource id="smileyFaceSource" shape={smileyFaceGeoJSON}>
<FillLayer id="smileyFaceFill" style={layerStyle} />
</ShapeSource>
</MapView>
);
}

render() {
return (
<>
{this.renderMap(StyleURL.Light, layerStyles.smileyFaceDark)}
{this.renderMap(StyleURL.Dark, layerStyles.smileyFaceLight)}
</>
);
}
}

export default TwoByTwo;

/** @type ExampleWithMetadata['metadata'] */
const metadata = {
title: 'Two Map Views',
tags: ['MapView'],
docs: `
Display two map views side by side
`,
};
TwoByTwo.metadata = metadata;

TwoByTwo.png}