AntV L7的pointLayer点图层
案例使用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. 演示效果
在这里,我们创建了一个蓝色和一个红色不同大小的点。
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。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!