import { LineLayer, Scene, MaskLayer, PolygonLayer, PointLayer, ImageLayer, } from '@antv/l7'; import { GaodeMap } from '@antv/l7-maps'; import * as React from 'react'; export default class MaskPoints extends React.Component { // @ts-ignore private scene: Scene; public componentWillUnmount() { this.scene.destroy(); } public async componentDidMount() { const scene = new Scene({ id: 'map', stencil: true, map: new GaodeMap({ center: [120.165, 30.26], pitch: 0, zoom: 15, style: 'dark', }), }); this.scene = scene; scene.addImage( '00', 'https://gw.alipayobjects.com/zos/basement_prod/604b5e7f-309e-40db-b95b-4fac746c5153.svg', ); const maskData = { type: 'FeatureCollection', features: [ { type: 'Feature', geometry: { type: 'MultiPolygon', coordinates: [ [ [ [120.16021728515624, 30.259660295442085], [120.15987396240234, 30.25313608393673], [120.16605377197266, 30.253729211980726], [120.1658821105957, 30.258474107402265], ], ], [ [ [120.1703453063965, 30.258474107402265], [120.17086029052733, 30.254174055663515], [120.17583847045898, 30.254915457324778], [120.17446517944336, 30.258474107402265], ], ], ], }, }, ], }; scene.on('loaded', () => { // let points = new PointLayer({ zIndex: 2, mask: true, maskInside: false }) // maskInside: true const layer = new ImageLayer({ mask: true, maskInside: false, maskfence: maskData, maskOpacity: 0.5, maskColor: '#f00', }); layer.source( 'https://gw.alipayobjects.com/zos/rmsportal/FnHFeFklTzKDdUESRNDv.jpg', { parser: { type: 'image', extent: [ 120.14802932739258, 30.262773970881057, 120.17669677734374, 30.25239466884559, ], }, }, ); scene.addLayer(layer); }); } public render() { return ( <>
); } }