// @ts-ignore import { Scene, CityBuildingLayer, LineLayer, PolygonLayer } from '@antv/l7'; // @ts-ignore import { Mapbox } from '@antv/l7-maps'; import React, { useEffect } from 'react'; export default () => { useEffect(() => { const scene = new Scene({ id: 'map', map: new Mapbox({ style: 'dark', center: [120.145, 30.238915], pitch: 60, zoom: 13.2, }), }); fetch( 'https://gw.alipayobjects.com/os/rmsportal/ggFwDClGjjvpSMBIrcEx.json', ).then(async (res) => { const pointLayer = new CityBuildingLayer(); pointLayer .source(await res.json()) .size('floor', [0, 500]) .color('rgba(242,246,250,1.0)') .animate({ enable: true, }) .active({ color: '#0ff', mix: 0.5, }) .style({ opacity: 0.7, baseColor: 'rgb(16, 16, 16)', windowColor: 'rgb(30, 60, 89)', brightColor: 'rgb(255, 176, 38)', sweep: { enable: true, sweepRadius: 2, sweepColor: '#1990FF', sweepSpeed: 0.5, sweepCenter: [120.145319, 30.238915], }, }); scene.addLayer(pointLayer); }); fetch( 'https://gw.alipayobjects.com/os/bmw-prod/67130c6c-7f49-4680-915c-54e69730861d.json', ) .then((data) => data.json()) .then(({ lakeBorderData, lakeData, landData }) => { const lakeLayer = new PolygonLayer() .source(lakeData) .shape('fill') .color('#1E90FF') .style({ opacity: 0.4, opacityLinear: { enable: true, dir: 'out', // in - out }, }); const landLayer = new PolygonLayer() .source(landData) .shape('fill') .color('#3CB371') .style({ opacity: 0.4, opacityLinear: { enable: true, dir: 'in', // in - out }, }); const lakeBorderLayer = new PolygonLayer() .source(lakeBorderData) .shape('fill') .color('#ccc') .style({ opacity: 0.5, opacityLinear: { enable: true, dir: 'in', // in - out }, }); scene.addLayer(lakeLayer); scene.addLayer(lakeBorderLayer); scene.addLayer(landLayer); }); fetch( 'https://gw.alipayobjects.com/os/basement_prod/40ef2173-df66-4154-a8c0-785e93a5f18e.json', ) .then((res) => res.json()) .then((data) => { const layer = new LineLayer({ zIndex: 0, depth: true, }) .source(data) .size(1) .shape('line') .color('#1990FF') .animate({ interval: 1, // 间隔 duration: 2, // 持续时间,延时 trailLength: 2, // 流线长度 }); scene.addLayer(layer); }); }, []); return (
); };