AntV L7的pointLayer点图层

2024-03-11 9023阅读

案例使用L7库和Mapbox GL JS创建点数据并加载进地图。

文章目录

  • 1. 引入 CDN 链接
  • 2. 引入组件
  • 3. 创建地图
  • 4. 创建场景
  • 5. 创建点数据
    • 5.1. 普通 json 数据
    • 5.2. geojson 数据
    • 6. 创建点图层
      • 6.1. 普通 json 数据
      • 6.2. geojson 数据
      • 7. 演示效果
      • 8. 代码实现

        1. 引入 CDN 链接

        
        
        

        2. 引入组件

        引入 L7-JS 库中的Scene、Mapbox和PointLayer组件。

        const { Scene, Mapbox, PointLayer } = L7;
        

        3. 创建地图

        我们创建了一个Mapbox GL JS地图实例,设置了地图的容器、默认的地图风格、中心点坐标、地图级别以及默认的地图投影模式。

        const map = new mapboxgl.Map({
          container: "map",
          style: "mapbox://styles/mapbox/streets-v12",
          center: [108.280717, 23.157163],
          zoom: 12,
          projection: "globe",
        });
        

        4. 创建场景

        Scene组件负责显示地图和其他图层。

        const scene = new L7.Scene({
          id: "map",
          map: new Mapbox({
            mapInstance: map,
          }),
        });
        

        5. 创建点数据

        5.1. 普通 json 数据

        在这里我们创建了两个坐标点的数据。

        const data = [
          {
            lng: 108.280717,
            lat: 23.157163,
            name: "武鸣区",
          },
          {
            lng: 108.290717,
            lat: 23.167163,
            name: "南宁师范大学",
          },
        ];
        

        5.2. geojson 数据

        在这里,我们创建一个表示地理数据的 JSON 格式。它包含了一个名为data的变量,该变量是一个包含类型为FeatureCollection的地理数据对象。FeatureCollection是一个包含多个Feature对象的集合,每个Feature对象表示一个地理要素(如点、线或面)。

        在这个例子中,data对象包含了两个Feature对象。第一个Feature对象的类型是Point,表示一个点,其坐标是108.280717, 23.157163。第二个Feature对象的类型是Point,表示一个点,其坐标是108.290717, 23.167163。这两个点的坐标分别位于武鸣区和南宁师范大学附近。

        const data = {
          type: "FeatureCollection",
          features: [
            {
              type: "Feature",
              properties: {
                name: "武鸣区",
              },
              geometry: {
                type: "Point",
                coordinates: [108.280717, 23.157163],
              },
            },
            {
              type: "Feature",
              properties: {
                name: "南宁师范大学",
              },
              geometry: {
                type: "Point",
                coordinates: [108.290717, 23.167163],
              },
            },
          ],
        };
        

        6. 创建点图层

        6.1. 普通 json 数据

        我们可以使用L7.PointLayer创建一个点云图层,设置点图层的样式。

                // 6.创建点图层
                // source默认可以解析geojson
                // PointLayer点图层,在L7中引入
                const pointLayer = new PointLayer({})
                  // source添加数据源
                  .source(data, {
                    parser: {
                      type: "json",
                      x: "lng",
                      y: "lat",
                    },
                  })
                  // shape指定点图层的样式
                  .shape("circle")
                  // size指定大小
                  .size("name", [10, 20])
                  // color指定颜色
                  .color("name", ["#e53e31", "#24adf3"])
                  .style({
                    opacity: 0.8,
                    strokeWidth: 1,
                  });
                // 最后将图层放到scene中
                scene.addLayer(pointLayer);
        

        6.2. geojson 数据

        source默认可以解析geojson。

                // PointLayer点图层,在L7中引入
                const pointLayer = new PointLayer({})
                  // source添加数据源
                  .source(data)
                  // shape指定点图层的样式
                  .shape("circle")
                  // size指定大小
                  .size("name", [10, 20])
                  // color指定颜色
                  .color("name", ["#e53e31", "#24adf3"])
                  .style({
                    opacity: 0.8,
                    strokeWidth: 1,
                  });
                scene.addLayer(pointLayer);
        

        7. 演示效果

        在这里,我们创建了一个蓝色和一个红色不同大小的点。

        AntV L7的pointLayer点图层 第1张

        8. 代码实现

        
          
            
            
            L7的pointLayer
            
            
            
            
            
              * {
                padding: 0;
                margin: 0;
              }
              body {
                overflow: hidden;
              }
              #map {
                width: 100vw;
                height: 100vh;
              }
            
          
          
            
        // 2.引入组件 const { Scene, Mapbox, PointLayer } = L7; mapboxgl.accessToken = "pk.eyJ1IjoiemhvbmdkaXNodW1hIiwiYSI6ImNsNXJoYXR5eTI2bGgzZW53d2didWF1c3AifQ.6vOplM2NQc_xnJW3aA5ZBA"; // 3.创建地图 const map = new mapboxgl.Map({ container: "map", style: "mapbox://styles/mapbox/streets-v12", center: [108.280717, 23.157163], zoom: 12, projection: "globe", }); // 4.创建场景 const scene = new L7.Scene({ id: "map", map: new Mapbox({ mapInstance: map, }), }); scene.on("load", () => { // 5.创建点数据 const data = [ { lng: 108.280717, lat: 23.157163, name: "武鸣区", }, { lng: 108.290717, lat: 23.167163, name: "南宁师范大学", }, ]; // 6.创建点图层 // source默认可以解析geojson // PointLayer点图层,在L7中引入 const pointLayer = new PointLayer({}) // source添加数据源 .source(data, { parser: { type: "json", x: "lng", y: "lat", }, }) // shape指定点图层的样式 .shape("circle") // size指定大小 .size("name", [10, 20]) // color指定颜色 .color("name", ["#e53e31", "#24adf3"]) .style({ opacity: 0.8, strokeWidth: 1, }); // 最后将图层放到scene中 scene.addLayer(pointLayer); });

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]