import { useEffect, useMemo, useState } from "react"; import { ImageryLayer, useCesium } from "resium"; import { WebMapServiceImageryProvider } from "cesium"; import { useInterval } from "ahooks"; import { useDispatch, useSelector } from "react-redux"; const url = "http://analysis.tpdc.ac.cn/gs/geoserver/phitrellis/wms"; const nameList = [ 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, ].map((item) => "phitrellis:4_1_la_" + item); function LabradorImageLayer() { const dispatch = useDispatch(); const { viewer } = useCesium(); const { imageLayer } = useSelector((state) => state.data); const [delay, setDelay] = useState(undefined); const [index, setIndex] = useState(0); useEffect(() => { const { labrador } = imageLayer; if (!!labrador) { setDelay((60 / nameList.length) * 1000); setIndex(0); } }, [imageLayer]); const layers = nameList.map((name, index) => { const tempProvider = useMemo( () => new WebMapServiceImageryProvider({ url: url, layers: name, parameters: { service: "WMS", format: "image/png", transparent: true, }, }), [name, url] ); return ( ); }); useInterval(() => { setIndex((index) => index + 1); if (index >= nameList.length) { setIndex(0); setDelay((60 / nameList.length) * 1000); } }, delay); if (!viewer.clock?.shouldAnimate) return; return layers[index]; } export default LabradorImageLayer;