import { LayerEvent, LineLayer, MapboxScene, Marker, PointLayer, PolygonLayer, Popup, } from '@antv/l7-react'; import * as React from 'react'; const colors = [ '#ffffb2', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#b10026', ]; function joinData(geodata: any, ncovData: any) { const ncovDataObj: any = {}; ncovData.forEach((item: any) => { const { countryName, countryEnglishName, currentConfirmedCount, confirmedCount, suspectedCount, curedCount, deadCount, } = item; if (countryName === '中国') { if (!ncovDataObj[countryName]) { ncovDataObj[countryName] = { countryName, countryEnglishName, currentConfirmedCount: 0, confirmedCount: 0, suspectedCount: 0, curedCount: 0, deadCount: 0, }; } else { ncovDataObj[countryName].currentConfirmedCount += currentConfirmedCount; ncovDataObj[countryName].confirmedCount += confirmedCount; ncovDataObj[countryName].suspectedCount += suspectedCount; ncovDataObj[countryName].curedCount += curedCount; ncovDataObj[countryName].deadCount += deadCount; } } else { ncovDataObj[countryName] = { countryName, countryEnglishName, currentConfirmedCount, confirmedCount, suspectedCount, curedCount, deadCount, }; } }); const geoObj: any = {}; geodata.features.forEach((feature: any) => { const { name } = feature.properties; geoObj[name] = feature.properties; const ncov = ncovDataObj[name] || {}; feature.properties = { ...feature.properties, ...ncov, }; }); return geodata; } export default React.memo(function Map() { const [data, setData] = React.useState(); const [filldata, setfillData] = React.useState(); const [popupInfo, setPopupInfo] = React.useState<{ lnglat: number[]; feature: any; }>(); React.useEffect(() => { const fetchData = async () => { const [geoData, ncovData] = await Promise.all([ fetch( 'https://gw.alipayobjects.com/os/bmw-prod/e62a2f3b-ea99-4c98-9314-01d7c886263d.json', ).then((d) => d.json()), fetch( 'https://gw.alipayobjects.com/os/bmw-prod/55a7dd2e-3fb4-4442-8899-900bb03ee67a.json', ).then((d) => d.json()), ]); const worldData = joinData(geoData, ncovData.results); const pointdata = worldData.features.map((feature: any) => { return feature.properties; }); setfillData(worldData); setData(pointdata); }; fetchData(); }, []); function showPopup(args: any): void { setPopupInfo({ lnglat: args.lngLat, feature: args.feature, }); } function hidePopup(args: any): void { setPopupInfo(undefined); } return ( <> {popupInfo && ( {popupInfo.feature.name} )} {data && [ , , {/* */} , { return v > 500; }, }} size={{ values: 12, }} style={{ opacity: 1, }} > , ]} ); });