dot-gl
Version:
An Interactive React Map Library with Redux.
2 lines (1 loc) • 1.29 kB
JavaScript
import t from"react";import{connect as e}from"react-redux";import{StaticMap as a}from"react-map-gl";import{DeckGL as o}from"@deck.gl/react";import{updateMapState as r}from"../reducers/mapStateReducer.js";import"../reducers/mapStyleReducer.js";const p=require("prop-types");class i extends t.PureComponent{_onViewStateChange=({viewState:t,oldViewState:e})=>{const{dispatch:a}=this.props;a(r({longitude:t?.longitude??e?.longitude??0,latitude:t?.latitude??e?.latitude??0,zoom:t?.zoom??e?.zoom??0,pitch:t?.pitch??e?.pitch??0,bearing:t?.bearing??e?.bearing??0}))};render(){const{mapState:e,mapStyle:r}=this.props;return t.createElement(o,{viewState:e,controller:!0,onViewStateChange:this._onViewStateChange},t.createElement(a,{mapStyle:r?.styleUrl??""}))}}i.propTypes={mapState:p.shape({longitude:p.number,latitude:p.number,zoom:p.number,pitch:p.number,bearing:p.number}),mapStyle:p.shape({styleUrl:p.string}),getRootState:p.func.isRequired,dispatch:p.func},i.defaultProps={mapState:{longitude:0,latitude:0,zoom:10,pitch:0,bearing:0},mapStyle:{styleUrl:"https://demotiles.maplibre.org/style.json"},getRootState:t=>t?.dotGl??{},dispatch:()=>null};const m=e(((t,e)=>({mapState:e.getRootState(t)?.mapState??{},mapStyle:e.getRootState(t)?.mapStyle??{}})),(t=>({dispatch:t})))(i);export{m as DotGL};