Kon*_*pov 6 mapbox reactjs mapbox-gl-js react-map-gl
我的地图实例位于可调整大小的容器中,当我更改大小时,我应该调用map.resize()。我想知道是否有一种方法可以监听 mapbox 容器调整大小事件,以便它可以触发 map.resize() ?你能建议如何做吗?
export default function Map({ chartID, configuration, data }) {
const classes = useStyles();
const mapContainer = useRef(null);
const [map, setMap] = useState(null);
const [settings, setSettings] = useState({
longitude: -73.935242,
latitude: 40.73061,
zoom: 9,
});
useEffect(() => {
const geoFeatures = //...getting data
const map = new mapboxgl.Map({
container: mapContainer.current,
style: 'mapbox://',
center: [settings.longitude, settings.latitude],
zoom: settings.zoom,
});
map.on('move', () => {...});
//setting map to state if we need to reference it later
setMap(map);
// Clean up on unmount
return () => map.remove();
}, []);
return (
<div className={classes.mapWrapper}>
<div ref={mapContainer} className={classes.map} />
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
Kon*_*pov 11
我最终添加了ResizeObserver和 debounce map.resize()
useEffect(()=>{
//map init....
const resizer = new ResizeObserver(_.debounce(() => map.resize(), 100));
resizer.observe(mapWrapper.current);
return () => {
resizer.disconnect();
map.remove();
};
},[])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4966 次 |
| 最近记录: |