This commit is contained in:
2912401452 2022-01-18 16:05:07 +08:00
commit 090b8472ce
40 changed files with 353 additions and 48 deletions

View File

@ -13,3 +13,13 @@ Error: Cannot apply @injectable decorator multiple times.
🌟 解决方法: 🌟 解决方法:
删除 node_modules 下所有不同版本的 L7 包,重新安装启动即可 删除 node_modules 下所有不同版本的 L7 包,重新安装启动即可
### 禁止地图交互
1. 初始化的时候可以在 map 配置项设置
- 高德地图可查看 https://lbs.amap.com/api/javascript-api/reference/map
- mapbox https://docs.mapbox.com/mapbox-gl-js/api/#map
2. 加载完成后设置
调用 scene 的 [setMapStatus](./scene/#setmapstatus) 方法

View File

@ -5,9 +5,39 @@ order: 15
`markdown:docs/common/style.md` `markdown:docs/common/style.md`
## 20201.05.31 2.4 正式版本 ## 2022.01.17 2.7 正式版本
###✨ Features ### ✨ Features
- 新增简单点、简单线
- 新增墙图层
- 新增风场图层
### 🍏 Improvements
- 柱图支持生长动画
- 柱图支持配置渐变、光照、深度
- 点图层支持等面积模式
- 线图层支持配置高度
- 弧线支持动态配置弧度
- 面图层支持配置径向渐变
- 拾取效果支持配置混合,光照计算
- color 增加图层保底颜色设置
- 增加 pointLayer image mipmap 支持
- 优化热力图在 radius 数值比较大时热力点边缘发生裁剪的现象
### 🐞 Bug Fixes
- 修复线图层在存在高度的情况下,不同地图,不同场景下的效果兼容
- 修复 threejs 图层导致 L7 图层失效的问题
- 修复 pointLayer meter 单个数据失效的情况
- 修复 marker 在 cluster getMakers 失效
- 取消在 shape 方法执行后的暴力更新
- 修复纹理贴图在 zoom 大于 12 时存在错位的问题
## 2021.05.31 2.4 正式版本
### ✨ Features
- 支持高德 2.0 JSAPI - 支持高德 2.0 JSAPI
- 支持 iconfont 字体图标功能 - 支持 iconfont 字体图标功能
@ -24,7 +54,7 @@ order: 15
## 2020.04.20 2.2 正式版本 ## 2020.04.20 2.2 正式版本
###✨ Features ### ✨ Features
#### [L7-Draw 地图绘制组件发布](../draw/start) #### [L7-Draw 地图绘制组件发布](../draw/start)
@ -52,7 +82,7 @@ order: 15
## 2020.03.12 2.1 正式版 ## 2020.03.12 2.1 正式版
###✨ Features ### ✨ Features
- 新增 l7-react 版本 - 新增 l7-react 版本
- 可自定义样式的聚合图 MakerLayer - 可自定义样式的聚合图 MakerLayer
@ -74,7 +104,7 @@ order: 15
[Github](https://github.com/antvis/L7) https://github.com/antvis/L7 欢迎 Star [Github](https://github.com/antvis/L7) https://github.com/antvis/L7 欢迎 Star
###✨ Features ### ✨ Features
• 新增弧线图,路径图动画功能 • 新增弧线图,路径图动画功能

View File

@ -87,3 +87,5 @@ new L7.Marker({
.setLnglat(item.coordinates) .setLnglat(item.coordinates)
.setPopup(popup); .setPopup(popup);
``` ```
[demo1](../../../examples/tutorial/marker#amap)

View File

@ -140,4 +140,4 @@ marker.on('click', (e) => {});
## demo 地址 ## demo 地址
[demo1](../../../examples/tutorial/marker) [demo1](../../../examples/tutorial/marker#amap)

View File

@ -153,5 +153,5 @@ popup.on('close', () => {});
## demo 地址 ## demo 地址
[demo1](../../../examples/point/column) [demo1](../../../examples/point/column#column_linear)
[demo2](../../../examples/line/path) [demo2](../../../examples/line/path#bus_light)

View File

@ -146,5 +146,5 @@ popup.on('close', () => {});
## demo 地址 ## demo 地址
[demo1](../../../examples/point/column) [demo1](../../../examples/point/column#column_linear)
[demo2](../../../examples/line/path) [demo2](../../../examples/line/path#bus_light)

View File

@ -29,9 +29,9 @@ const layer = new LineLayer({})
}); });
``` ```
<img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*JjUcTZ8-PC8AAAAAAAAAAABkARQnAQ'> <img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*xvaaQo2c0gMAAAAAAAAAAABkARQnAQ'>
[在线案例](../../../examples/gallery/basic#arcCircle) [在线案例](../../../examples/line/arc#trip_arc)
### shape ### shape

View File

@ -29,7 +29,7 @@ L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。 如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。
<img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*W-m5Q6yrL_UAAAAAAAAAAAAAARQnAQ'> <img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*mo_7Q6sTqOIAAAAAAAAAAAAAARQnAQ'>
[在线案例](../../../examples/gallery/animate#plane_animate2) [在线案例](../../../examples/gallery/animate#plane_animate2)

View File

@ -22,6 +22,6 @@ const layer = new LineLayer({})
}); });
``` ```
<img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_23a451/afts/img/A*RZEgSYZLeJIAAAAAAAAAAAAAARQnAQ'> <img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*8DYQTZeQyZ4AAAAAAAAAAAAAARQnAQ'>
[在线案例](../../../examples/line/arc#trip_arc_dark_linear) [在线案例](../../../examples/line/arc#trip_arc_dark_linear)

View File

@ -31,7 +31,7 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/40ef2173-df66-4154-a8c0-785
- lineTexture 指定是否开启纹理贴图能力 - lineTexture 指定是否开启纹理贴图能力
- iconStep 指定贴图在线图层上面排布的间隔 - iconStep 指定贴图在线图层上面排布的间隔
<img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*i2fJSJHpVGcAAAAAAAAAAAAAARQnAQ'> <img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*KEupSZ_p0pYAAAAAAAAAAAAAARQnAQ'>
[在线案例](../../../examples/gallery/animate#animate_path_texture) [在线案例](../../../examples/gallery/animate#animate_path_texture)
@ -67,5 +67,5 @@ fetch('https://gw.alipayobjects.com/os/basement_prod/40ef2173-df66-4154-a8c0-785
``` ```
[在线案例](../../../examples/gallery/animate#route_line) [在线案例](../../../examples/line/animate#plane_animate2)

View File

@ -20,6 +20,6 @@ const layer = new LineLayer({})
thetaOffset: 0.35, thetaOffset: 0.35,
}); });
``` ```
<img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*i6d6SqQgjAwAAAAAAAAAAAAAARQnAQ'> <img width="450px" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*qRFaR7Ko274AAAAAAAAAAAAAARQnAQ'>
[在线案例](../../../examples/gallery/animate#route_line) [在线案例](../../../examples/gallery/animate#route_line)

View File

@ -87,6 +87,6 @@ lineLayer.size([1, 2]); // 宽度为1高度2
`markdown:docs/api/line_layer/features/texture.zh.md` `markdown:docs/api/line_layer/features/texture.zh.md`
[在线案例](../../../examples/line/isoline#height) `markdown:docs/api/line_layer/features/vertexHeight.zh.md`
`markdown:docs/common/layer/base.md` `markdown:docs/common/layer/base.md`

View File

@ -12,7 +12,7 @@ order: 1
import { LineLayer } from '@antv/l7'; import { LineLayer } from '@antv/l7';
``` ```
<img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*VJX5Qo7ufaAAAAAAAAAAAABkARQnAQ'> <img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*KEupSZ_p0pYAAAAAAAAAAAAAARQnAQ'>
[在线案例](../../../examples/gallery/animate#animate_path) [在线案例](../../../examples/gallery/animate#animate_path)

View File

@ -37,8 +37,6 @@ import { PointLayer } from '@antv/l7';
scene.getPointSizeRange(); // Float32Array - [min, max] scene.getPointSizeRange(); // Float32Array - [min, max]
``` ```
## 相关 demo
[在线案例](../../../examples/point/dot#normal2) [在线案例](../../../examples/point/dot#normal2)
`markdown:docs/common/layer/base.md` `markdown:docs/common/layer/base.md`

View File

@ -47,6 +47,6 @@ style({
}); });
``` ```
[光照拾取](../../../../examples/react/covid#covid_extrude) [光照拾取](/zh/examples/react/covid#covid_extrude)
`markdown:docs/common/layer/base.md` `markdown:docs/common/layer/base.md`

View File

@ -803,15 +803,3 @@ scene.on('dragstart', (ev) => {}); //开始拖拽地图时触发
scene.on('dragging', (ev) => {}); // 拖拽地图过程中触发 scene.on('dragging', (ev) => {}); // 拖拽地图过程中触发
scene.on('dragend', (ev) => {}); //停止拖拽地图时触发。如地图有拖拽缓动效果,则在拽停止,缓动开始前触发 scene.on('dragend', (ev) => {}); //停止拖拽地图时触发。如地图有拖拽缓动效果,则在拽停止,缓动开始前触发
``` ```
## FAQ
### 禁止地图交互
1. 初始化的时候可以在 map 配置项设置
- 高德地图可查看 https://lbs.amap.com/api/javascript-api/reference/map
- mapbox https://docs.mapbox.com/mapbox-gl-js/api/#map
2. 加载完成后设置
调用 scene 的 [setMapStatus](./scene/#setmapstatus) 方法

View File

@ -41,7 +41,7 @@ layer.source(data, {
}); });
``` ```
[JOSN 数据 demo 示例](../../../examples/gallery/basic) [JOSN 数据 demo 示例](../../../examples/gallery/animate#animate_path_texture)
### 通用解析方式 ### 通用解析方式

View File

@ -40,7 +40,7 @@ source 地理数据处理模块主要包含数据解析parser),和数据
- minZoom: 最小聚合缩放等级 **number** default 0 - minZoom: 最小聚合缩放等级 **number** default 0
- maxZoom: 最大聚合缩放等级 **number** default 16 - maxZoom: 最大聚合缩放等级 **number** default 16
[聚合图使用案例](../../../examples/point/cluster) [聚合图使用案例](../../../examples/point/cluster#cluster)
### parser ### parser

View File

@ -18,6 +18,7 @@ import { WindLayer } from '@antv/l7';
(data, options) => WindLayer, 设置风场相关信息的函数 (data, options) => WindLayer, 设置风场相关信息的函数
- data: string 存储风场信息的图片地址 - data: string 存储风场信息的图片地址
🌟 [数据获取](https://github.com/mapbox/webgl-wind#downloading-weather-data)
- options: - options:
```js ```js

View File

@ -7,9 +7,9 @@
- data { geojson | json | csv } - data { geojson | json | csv }
- config   可选   数据源配置项 - config   可选   数据源配置项
- parser 数据解析,默认是解析层 geojson - parser 数据解析,默认是解析层 geojson
- transforms [transformtransform ]  数据处理转换 可设置多个 - transforms [transformtransform ]  数据处理转换可设置多个
parser 和  transforms [见 source 文档](../../source/source) parser 和  transforms [见 source 文档](/zh/docs/api/source/source)
```javascript ```javascript
layer.source(data, { layer.source(data, {

View File

@ -34,6 +34,6 @@ const layer = new LineLayer({
}); });
``` ```
<img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*i2fJSJHpVGcAAAAAAAAAAAAAARQnAQ'> <img width="60%" style="display: block;margin: 0 auto;" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*KEupSZ_p0pYAAAAAAAAAAAAAARQnAQ'>
[在线案例](../../examples/gallery/animate#animate_path_texture) [在线案例](../../examples/line/animate#plane_animate2)

View File

@ -12,7 +12,7 @@
{ {
"filename": "trip_arc_dark.js", "filename": "trip_arc_dark.js",
"title": "3D 弧线", "title": "3D 弧线",
"screenshot": "https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*JjUcTZ8-PC8AAAAAAAAAAABkARQnAQ" "screenshot": "https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*Qg8sQ4H9RVsAAAAAAAAAAAAAARQnAQ"
}, },
{ {

View File

@ -18,7 +18,7 @@ scene.on('loaded', () => {
const layer = new LineLayer({}) const layer = new LineLayer({})
.source(data, { .source(data, {
parser: { parser: {
type: 'csv', type: 'json',
x: 'from_lon', x: 'from_lon',
y: 'from_lat', y: 'from_lat',
x1: 'to_lon', x1: 'to_lon',
@ -26,7 +26,7 @@ scene.on('loaded', () => {
} }
}) })
.size(1) .size(1)
.shape('arc') .shape('arc3d')
.color('#FF7C6A') .color('#FF7C6A')
.style({ .style({
segmentNumber: 15, segmentNumber: 15,

View File

@ -0,0 +1,62 @@
import { Scene, PointLayer, Source } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
const scene = new Scene({
id: 'map',
map: new GaodeMap({
center: [ 120.19382669582967, 30.258134 ],
pitch: 0,
style: 'dark',
zoom: 3
})
});
scene.on('loaded', () => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/87e40417-a5da-4fdb-8313-c796ea15f982.csv')
.then(res => res.text())
.then(data => {
const dataSource = new Source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
cluster: true
});
const pointLayer = new PointLayer({
autoFit: true
})
.source(dataSource)
.shape('circle')
.scale('point_count', {
type: 'quantile'
})
.size('point_count', [ 5, 10, 15, 20, 25 ])
.active(true)
.color('rgb(73,167,86)')
.style({
opacity: 1,
strokeWidth: 1,
stroke: '#fff'
});
// 聚合图标注
const pointLayerText = new PointLayer({
autoFit: false
})
.source(dataSource)
.shape('point_count', 'text')
.size(15)
.active(true)
.color('#fff')
.style({
opacity: 1,
strokeWidth: 0,
stroke: '#fff'
});
scene.addLayer(pointLayer);
scene.addLayer(pointLayerText);
});
});

View File

@ -7,7 +7,12 @@
{ {
"filename": "cluster.js", "filename": "cluster.js",
"title": "聚合图", "title": "聚合图",
"screenshot": "https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*MowATbzWK_QAAAAAAAAAAAAAARQnAQ" "screenshot": "https://gw.alipayobjects.com/mdn/antv_site/afts/img/A*paQsRKykjL4AAAAAAAAAAABkARQnAQ"
},
{
"filename": "cluster2.js",
"title": "充电桩分布聚合图",
"screenshot": "https://gw.alipayobjects.com/mdn/rms_08cc33/afts/img/A*dy0NSJHoRSYAAAAAAAAAAAAAARQnAQ"
} }
] ]

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.en.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.zh.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.en.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.zh.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.en.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.zh.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.en.md`

View File

@ -0,0 +1,4 @@
---
title: API
---
`markdown:docs/api/base.zh.md`

View File

@ -98,6 +98,7 @@ export interface ILayer {
name: string; // name: string; //
inited: boolean; // 是否初始化完成 inited: boolean; // 是否初始化完成
zIndex: number; zIndex: number;
clusterZoom: number;
plugins: ILayerPlugin[]; plugins: ILayerPlugin[];
layerModelNeedUpdate: boolean; layerModelNeedUpdate: boolean;
styleNeedUpdate: boolean; styleNeedUpdate: boolean;

View File

@ -73,6 +73,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
public selectedFeatureID: number | null = null; public selectedFeatureID: number | null = null;
public styleNeedUpdate: boolean = false; public styleNeedUpdate: boolean = false;
public rendering: boolean; public rendering: boolean;
public clusterZoom: number = 0; // 聚合等级标记
public dataState: IDataState = { public dataState: IDataState = {
dataSourceNeedUpdate: false, dataSourceNeedUpdate: false,
@ -491,6 +492,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
data, data,
options, options,
}; };
this.clusterZoom = 0;
return this; return this;
} }
public setData(data: any, options?: ISourceCFG) { public setData(data: any, options?: ISourceCFG) {
@ -862,6 +864,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
} }
this.layerSource = source; this.layerSource = source;
this.clusterZoom = 0;
// 已 inited 且启用聚合进行更新聚合数据 // 已 inited 且启用聚合进行更新聚合数据
if (this.inited && this.layerSource.cluster) { if (this.inited && this.layerSource.cluster) {
@ -1093,7 +1096,7 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
if (autoFit) { if (autoFit) {
this.fitBounds(fitBoundsOptions); this.fitBounds(fitBoundsOptions);
} }
// 对外暴露事件
this.emit('dataUpdate'); this.emit('dataUpdate');
this.reRender(); this.reRender();
}; };

View File

@ -46,10 +46,14 @@ export default class DataSourcePlugin implements ILayerPlugin {
// 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次 // 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次
if ( if (
cluster && cluster &&
(dataSourceNeedUpdate || Math.abs(zoom - newZoom) > 1) && (dataSourceNeedUpdate || Math.abs(layer.clusterZoom - newZoom) >= 1) &&
maxZoom > zoom maxZoom > layer.clusterZoom
) { ) {
source.updateClusterData(Math.floor(newZoom)); // TODO 判断数据是否更新
if (zoom !== Math.floor(newZoom)) {
source.updateClusterData(Math.round(newZoom));
}
layer.clusterZoom = newZoom;
return true; return true;
} }
return false; return false;

View File

@ -5,6 +5,7 @@ import Arc2DLineDemo from './components/Arc2DLine';
import ArcLineDemo from './components/Arcline'; import ArcLineDemo from './components/Arcline';
import CityBuildingLayerDemo from './components/citybuilding'; import CityBuildingLayerDemo from './components/citybuilding';
import ClusterDemo from './components/cluster'; import ClusterDemo from './components/cluster';
import ClusterDemo2 from './components/cluster2';
import Column from './components/column'; import Column from './components/column';
import DashLineDemo from './components/dash'; import DashLineDemo from './components/dash';
import DataUpdate from './components/data_update'; import DataUpdate from './components/data_update';
@ -31,6 +32,7 @@ import TextLayerDemo from './components/Text';
storiesOf('图层', module) storiesOf('图层', module)
.add('点图层', () => <PointDemo />) .add('点图层', () => <PointDemo />)
.add('聚合图', () => <ClusterDemo />) .add('聚合图', () => <ClusterDemo />)
.add('聚合图标注', () => <ClusterDemo2 />)
.add('数据更新', () => <DataUpdate />) .add('数据更新', () => <DataUpdate />)
.add('点动画', () => <AnimatePoint />) .add('点动画', () => <AnimatePoint />)
.add('3D点', () => <Point3D />) .add('3D点', () => <Point3D />)

View File

@ -0,0 +1,95 @@
import { PointLayer, Scene, Source } from '@antv/l7';
import { GaodeMap, Mapbox } from '@antv/l7-maps';
import * as React from 'react';
// @ts-ignore
import data from '../data/data.json';
export default class Point3D extends React.Component {
// @ts-ignore
private scene: Scene;
public componentWillUnmount() {
this.scene.destroy();
}
public async componentDidMount() {
const scene = new Scene({
id: 'map',
pickBufferScale: 3.0,
map: new GaodeMap({
style: 'light',
center: [-121.24357, 37.58264],
pitch: 0,
zoom: 10.45,
}),
});
scene.on('loaded', () => {
const fontFamily = 'iconfont';
const fontPath =
'//at.alicdn.com/t/font_2534097_fcae9o2mxbv.woff2?t=1622200439140';
scene.addFontFace(fontFamily, fontPath);
scene.addIconFont('icon1', '&#xe6d4;');
fetch(
'https://gw.alipayobjects.com/os/bmw-prod/87e40417-a5da-4fdb-8313-c796ea15f982.csv',
)
.then((res) => res.text())
.then((data) => {
const dataSource = new Source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
cluster: true,
});
const pointLayer = new PointLayer({
autoFit: true,
})
.source(dataSource)
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
.active(true)
.color('rgb(73,167,86)')
.style({
opacity: 1,
strokeWidth: 1,
stroke: '#333',
});
const pointLayerText = new PointLayer({
autoFit: true,
})
.source(dataSource)
.shape('point_count', 'text')
.size(15)
.active(true)
.color('#fff')
.style({
opacity: 1,
strokeWidth: 0,
stroke: '#fff',
});
scene.addLayer(pointLayer);
scene.addLayer(pointLayerText);
});
});
}
public render() {
return (
<div
id="map"
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
}}
/>
);
}
}

View File

@ -0,0 +1,70 @@
import { PointLayer, Marker, Scene } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
import * as React from 'react';
export default class Cluster extends React.Component {
// @ts-ignore
private scene: Scene;
public componentWillUnmount() {
// this.scene.destroy();
}
public async componentDidMount() {
const scene = new Scene({
id: 'map',
map: new GaodeMap({
center: [110.19382669582967, 30.258134],
pitch: 0,
zoom: 3,
}),
});
scene.on('loaded', () => {
fetch(
'https://gw.alipayobjects.com/os/basement_prod/d3564b06-670f-46ea-8edb-842f7010a7c6.json',
)
.then((res) => res.json())
.then((data) => {
const pointLayer = new PointLayer({})
.source(data, {
cluster: true,
})
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
.active(true)
.color('yellow')
.style({
opacity: 0.5,
strokeWidth: 1,
});
scene.addLayer(pointLayer);
scene.on('zoomchange', () => {
const d = pointLayer.getSource();
// console.log('ddd', d.data.dataArray)
});
});
});
}
public render() {
return (
<>
<div
id="map"
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
}}
/>
</>
);
}
}

View File

@ -74,6 +74,7 @@ import SimplePoint from './components/simplePoint';
import LineWall from './components/linewall' import LineWall from './components/linewall'
import GridTile from './components/gridTile' import GridTile from './components/gridTile'
import GridTile2 from './components/gridTile2' import GridTile2 from './components/gridTile2'
import Cluster from './components/cluster'
// @ts-ignore // @ts-ignore
storiesOf('地图方法', module) storiesOf('地图方法', module)
@ -152,3 +153,4 @@ storiesOf('地图方法', module)
.add('BusLine', () => <BusLine/>) .add('BusLine', () => <BusLine/>)
.add('GridTile', () => <GridTile/>) .add('GridTile', () => <GridTile/>)
.add('GridTile2', () => <GridTile2/>) .add('GridTile2', () => <GridTile2/>)
.add('Cluster', () => <Cluster/>)