Skip to content

Loading example…

Source
import { LineLayer, PointLayer, Scene } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';

const scene = new Scene({
  id: 'map',
  map: new GaodeMap({
    style: 'dark',
    center: [105, 35],
    zoom: 2.5,
  }),
});

scene.addImage(
  'arrRed',
  'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*KWGqT6Oz50EAAAAAAAAAAAAAARQnAQ',
);
scene.addImage(
  'arrBlue',
  'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*ZKhURq53OgIAAAAAAAAAAAAAARQnAQ',
);

scene.on('loaded', () => {
  fetch('https://gw.alipayobjects.com/os/bmw-prod/4c02515b-cb7a-47be-93cf-5596731ef982.json')
    .then((res) => res.json())
    .then((monsoon) => {
      const { data, borderData } = monsoon;
      const imageLayer = new PointLayer()
        .source(data)
        .shape('wind', (wind) => {
          if (wind === 'up') {
            return 'arrBlue';
          }
          return 'arrRed';
        })
        .size(15)
        .style({
          rotation: {
            field: 'r',
            value: [0, 90, 180, 270],
          },
          billboard: false, // 图片图层只有非精灵模式支持旋转
        });
      scene.addLayer(imageLayer);

      const border = new LineLayer()
        .source(borderData)
        .size(1.5)
        .color('#575757')
        .style({
          lineType: 'dash',
          dashArray: [5, 5],
        });
      scene.addLayer(border);

      const text = new PointLayer({ zIndex: 2 })
        .source(
          [
            { lng: 90, lat: 35, n: '非季风区' },
            { lng: 125, lat: 30, n: '季风区' },
          ],
          {
            parser: {
              type: 'json',
              x: 'lng',
              y: 'lat',
            },
          },
        )
        .shape('n', 'text')
        .size(25)
        .color('#575757')
        .style({
          spacing: 20,
        });

      scene.addLayer(text);
    });
});
Site search
Documentation and examplesType to start searching

Search documentation, APIs, and examples

↑↓Select↵OpenEscClose