antv-l7/stories/Map/components/amap2demo_wind.tsx

201 lines
4.4 KiB
TypeScript
Raw Normal View History

Wind (#858) * feat: 增加小程序环境判断、替换 regl -> l7regl * style: code style * feat(新增工程配置): 新增小程序工程配置 * feat: 支持小程序环境中传入 canvas 实例用于渲染、兼容 L7 原有代码 * style: code style * feat: 小程序不需要对 classList 操作(真机也没有 classList 属性) * style: code style * feat: 对 docStyle、devicePixelRatio 以及部分 dom 的兼容 * style: code style * feat: 小程序兼容 window.perframce.now requestAnimationFrame * feat: 新增工程配置 * feat: 新增工程配置 * feat: 兼容动画减弱以及部分的 dom 处理 * style: code style * feat: 替换 mapbox/tiny-sdf -> l7-tiny-sdf * style: code style * feat: 兼容操作 * style: code style * style: demo code * feat: change version * feat: mini code * feat: 小程序兼容 * feat: 合并mini-adapter * feat: 合并mini-adapter * feat: 新增tag * feat: 增加 imageData 兼容 * style: code style by lint * feat: 修改版本号 * feat: 新增mini6 beta版本 * feat: 去除原adapter * feat: 修改版本号 * feat: 升级版本 * feat: 修改版本引用 * style: code style * feat: 小程序兼容requestAnimationFrame * feat: 小程序兼容requestAnimationFrame * style: maps -> mini * feat: update mini version * feat: 修改 webgl 扩展名称的大小写、使之可以与 l7regl 配合,兼容小程序环境 * feat: 用适配的 requestAnimateFrame 替换 setInterval * feat: 修改 L7 - mini 版本、修改 adapter 中 screen、devicePixelRadio 关于 isMini 的取值 * feat: 修复小程序环境中 getMapTouches 的取值 * feat: 地图联动部分改造 * feat: 增加地图联动 * feat: 修复新增小程序地图联动 * feat: 增加小程序地图联动 * style: lint style * style: handle merge conflict * feat: 增加有无底图模式的参数控制、修复与小程序地图联动时的 bug * style: lint style * feat: 扩展小程序地图联动传递参数 * style: lint style * chore: update L7Mini version 2.5.8 - mini16 -> 2.5.8 - mini17 * feat: 增加小程序可视化交互注册监听时上下文绑定 * style: lint style * chore: update L7Mini version 2.5.8mini17 -> 2.5.8mini18 * chore: update L7Mini version 2.5.8mini18 -> 2.5.8mini19 * chore: update L7Mini version 2.5.8mini20 -> 2.5.8mini21 * feat: add performance demo * style: lint style * style: lint style * feat: add getModelMatrix into viewport * feat: 新增地球模式 (初步构建) * feat: 完善地球交互 * style: lint style * feat: 调整地球图层缩放的方向 * style: lint style * feat: 增加地球模式的 pointLayer/fill 图层 * style: lint style * feat: 增加地球、太阳的简单运动系统,优化部分代码结构 * fix: 修复时间点击出错 * style: lint style * fix: 修复地图 panBy 方法参数错误 * style: lint style * feat: pointLayer/cylinder 圆柱兼容地球模式 * style: lint style * feat: 修复 pointLayer/fill 在拾取是破面严重的情况 * style: lint style * feat: 增加 arc 弧度调节 * feat: 增加 lineLayer/arc3d 兼容地球模式 * style: lint style * feat: 增加地球图层 - 大气层 * style: lint style * feat: 增加设置可视化层背景色的能力 * style: lint style * feat: 增加地球外发光效果 * style: lint style * feat: 允许用户不使用 layer 的 source 方法 - 地球模式下光晕图层不需要传数据 * style: lint style * feat: 调整光晕的 shader 计算 * feat: 调整地球大气层的渲染层级 * style: lint style * feat: 调整案例 * style: lint style * feat: 增加地球图层的默认参数、调整部分代码 * style: lint style * feat: imageTile developinging * style: lint style * feat: 新增图片瓦片地图 * fix: 修复 amap2 新增样式导致的 marker 失效 * feat: 修复 amap2 的 amap-maps 新增 z-index=0; 引发的marker 显示层级失效 * feat: amap2 的 amap-maps 新增 z-index=0; 样式,让 marker 中 zIndex 失效 * style: lint style * feat: 补全瓦片地图中的类型引用 * style: lint style * feat: 取消 earthmap 的 hash 模块 * feat: 调整 L7Mini 版本 * feat: 合并图片瓦片图层 * feat: 增加 imageLayer 的对小程序的兼容 * style: lint style * feat: 修改小程序分支版本 * feat: 更新 l7regl 依赖(补充对支付宝小程序 image 对象的类型判断) * feat: 增加 demo * style: lint style * feat: 修复 varying 传递 float 总数在部分终端设备 ios13 上突破限制的问题 * feat: add stoty demo * style: lint style * feat: 调整 aspace demo * feat: 调整 aspace demo * style: lint style * feat: 调整 demo * feat: 补充依赖 * feat: 新增 arcmini layer,增加拖拽时的拾取优化(地图拖拽时取消拾取) * feat: 增加注释 * feat: 剔除地图拖拽时多余的 shader 计算 * style: lint style * feat: 暂时取消拖拽时 shader 的过滤处理 * style: lint style * feat: 合并 mi nimini * feat: add l7hammerjs * feat: 增加 l7hammerjs 声明 * feat: update version * feat: merge shihui_dev * feat: 去除多余依赖 * feat: 小程序合并 master 无报错版本 * feat: 修改 demo * style: lint style * feat: change l7hammerjs * feat: remove test hammerjs * chore: update verison and get enable branch 2.5.37-mini19 * chore: update version 2.5.37-mini19 -> 2.5.37-mini20 enabled * feat: 去除 hammerjs 的类型定义 - l7hammerjs * style: lint style * feat: 增加类型定义 @antv/l7-maps/lib/map/ * feat: 调整类型定义 * feat: 调整类型定义文件 * feat: change typing * feat: 增加图层渲染列表 layerList 更新图层渲染排序计算 去除夺取 renderTest * style: lint style * feat: 修复一些小程序合并/imageTile 的问题 * style: lint style * feat: 补全漏写的 updateLayerRenderList 排序 * feat: 完善站点构建 增加 @antv/l7-maps/lib/map 的引用 * feat: 增加瓦片地图缩放限制 zoom < 2 * feat: sceneService 小程序适配 window -> $window * style: lint style * feat: 修复 map 在大比例尺地图下精度丢失的问题、更新l7regl、l7eval5 Float64Array * style: lint style * feat: 修复 scene.destroy 在小程序模式下的不兼容 * feat: 修复 scene.destroy 小程序兼容失败 * feat: 适配 utils 中 global * feat: 修复 layer remove repreat emit 'remove' * feat: 增加小程序环境下对地图最大缩放等级的兼容、能放下完整世界地图 * style: lint style * feat: 修改小程序 DPR 适配 * style: lint style * feat: 调整 lineLayer 的网格构建,支持顶点高度的传入 * style: lint style * feat: rendererService 新增方法 * style: lint style * feat: 增加 threejs 案例和方法 * style: lint style * feat: 优化点图层,水波纹点的拾取 * feat: 优化 pointLayer shape 切换时 2d/3d 无法成功切换 * style: lint style * feat: 修复 map 地图类型 zoom > 16 层级时精度丢失问题 * feat: 完善高德地图和 Mapbox 不同地图之间层级和大小表现相同 * style: lint style * feat: 增加风场图层的文件结构 * style: lint style * feat: 增加风场图层 * feat: 修复混合模式导致的风场失效 * style: lint style * feat: 补充销毁方法 * feat: 增加大小控制 Co-authored-by: zhongwu <xingya.sxy@alibaba-inc.com>
2021-12-07 17:31:54 +08:00
// @ts-ignore
import { Scene, WindLayer, PointLayer } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
import * as React from 'react';
import * as dat from 'dat.gui';
export default class WindMap extends React.Component {
// @ts-ignore
private scene: Scene;
private gui: any;
public componentWillUnmount() {
if (this.gui) {
this.gui.destroy();
}
this.scene.destroy();
}
public async componentDidMount() {
const scene = new Scene({
id: 'map',
map: new GaodeMap({
center: [40, 30.3628],
pitch: 0,
style: 'normal',
zoom: 2,
viewMode: '3D',
}),
});
this.scene = scene;
const pointLayer = new PointLayer({ zIndex: 1 })
.source(
[
{
lng: 121.107846,
lat: 30.267069,
},
],
{
parser: {
type: 'json',
x: 'lng',
y: 'lat',
},
},
)
.shape('circle')
.color('#f00')
.active(true)
.size(40)
.style({
stroke: '#fff',
storkeWidth: 2,
});
scene.on('loaded', () => {
scene.addLayer(pointLayer);
const styleOptions = {
uMin: -21.32,
uMax: 26.8,
vMin: -21.57,
vMax: 21.42,
numParticles: 65535,
fadeOpacity: 0.996,
rampColors: {
0.0: '#3288bd',
0.1: '#66c2a5',
0.2: '#abdda4',
0.3: '#e6f598',
0.4: '#fee08b',
0.5: '#fdae61',
0.6: '#f46d43', // f46d43
1.0: '#d53e4f',
},
sizeScale: 0.5,
};
const layer = new WindLayer({});
layer
.source(
'https://gw.alipayobjects.com/mdn/rms_23a451/afts/img/A*wcU8S5xMEDYAAAAAAAAAAAAAARQnAQ',
{
parser: {
type: 'image',
extent: [-180, -85, 180, 85],
},
},
)
.animate(true)
.style({
uMin: styleOptions.uMin,
uMax: styleOptions.uMax,
vMin: styleOptions.vMin,
vMax: styleOptions.vMax,
fadeOpacity: styleOptions.fadeOpacity,
numParticles: styleOptions.numParticles,
rampColors: styleOptions.rampColors,
sizeScale: styleOptions.sizeScale,
});
scene.addLayer(layer);
/*** 运行时修改样式属性 ***/
const gui = new dat.GUI();
this.gui = gui;
const pointFolder = gui.addFolder('风场数据');
pointFolder
.add(styleOptions, 'numParticles', 0, 65535, 1)
.onChange((num: number) => {
layer.style({
numParticles: num,
});
});
pointFolder
.add(styleOptions, 'uMin', -100, 100, 1)
.onChange((num: number) => {
layer.style({
uMin: num,
});
});
pointFolder
.add(styleOptions, 'uMax', -100, 100, 1)
.onChange((num: number) => {
layer.style({
uMax: num,
});
});
pointFolder
.add(styleOptions, 'vMin', -100, 100, 1)
.onChange((num: number) => {
layer.style({
vMin: num,
});
});
pointFolder
.add(styleOptions, 'vMax', -100, 100, 1)
.onChange((num: number) => {
layer.style({
vMax: num,
});
});
Wind (#858) * feat: 增加小程序环境判断、替换 regl -> l7regl * style: code style * feat(新增工程配置): 新增小程序工程配置 * feat: 支持小程序环境中传入 canvas 实例用于渲染、兼容 L7 原有代码 * style: code style * feat: 小程序不需要对 classList 操作(真机也没有 classList 属性) * style: code style * feat: 对 docStyle、devicePixelRatio 以及部分 dom 的兼容 * style: code style * feat: 小程序兼容 window.perframce.now requestAnimationFrame * feat: 新增工程配置 * feat: 新增工程配置 * feat: 兼容动画减弱以及部分的 dom 处理 * style: code style * feat: 替换 mapbox/tiny-sdf -> l7-tiny-sdf * style: code style * feat: 兼容操作 * style: code style * style: demo code * feat: change version * feat: mini code * feat: 小程序兼容 * feat: 合并mini-adapter * feat: 合并mini-adapter * feat: 新增tag * feat: 增加 imageData 兼容 * style: code style by lint * feat: 修改版本号 * feat: 新增mini6 beta版本 * feat: 去除原adapter * feat: 修改版本号 * feat: 升级版本 * feat: 修改版本引用 * style: code style * feat: 小程序兼容requestAnimationFrame * feat: 小程序兼容requestAnimationFrame * style: maps -> mini * feat: update mini version * feat: 修改 webgl 扩展名称的大小写、使之可以与 l7regl 配合,兼容小程序环境 * feat: 用适配的 requestAnimateFrame 替换 setInterval * feat: 修改 L7 - mini 版本、修改 adapter 中 screen、devicePixelRadio 关于 isMini 的取值 * feat: 修复小程序环境中 getMapTouches 的取值 * feat: 地图联动部分改造 * feat: 增加地图联动 * feat: 修复新增小程序地图联动 * feat: 增加小程序地图联动 * style: lint style * style: handle merge conflict * feat: 增加有无底图模式的参数控制、修复与小程序地图联动时的 bug * style: lint style * feat: 扩展小程序地图联动传递参数 * style: lint style * chore: update L7Mini version 2.5.8 - mini16 -> 2.5.8 - mini17 * feat: 增加小程序可视化交互注册监听时上下文绑定 * style: lint style * chore: update L7Mini version 2.5.8mini17 -> 2.5.8mini18 * chore: update L7Mini version 2.5.8mini18 -> 2.5.8mini19 * chore: update L7Mini version 2.5.8mini20 -> 2.5.8mini21 * feat: add performance demo * style: lint style * style: lint style * feat: add getModelMatrix into viewport * feat: 新增地球模式 (初步构建) * feat: 完善地球交互 * style: lint style * feat: 调整地球图层缩放的方向 * style: lint style * feat: 增加地球模式的 pointLayer/fill 图层 * style: lint style * feat: 增加地球、太阳的简单运动系统,优化部分代码结构 * fix: 修复时间点击出错 * style: lint style * fix: 修复地图 panBy 方法参数错误 * style: lint style * feat: pointLayer/cylinder 圆柱兼容地球模式 * style: lint style * feat: 修复 pointLayer/fill 在拾取是破面严重的情况 * style: lint style * feat: 增加 arc 弧度调节 * feat: 增加 lineLayer/arc3d 兼容地球模式 * style: lint style * feat: 增加地球图层 - 大气层 * style: lint style * feat: 增加设置可视化层背景色的能力 * style: lint style * feat: 增加地球外发光效果 * style: lint style * feat: 允许用户不使用 layer 的 source 方法 - 地球模式下光晕图层不需要传数据 * style: lint style * feat: 调整光晕的 shader 计算 * feat: 调整地球大气层的渲染层级 * style: lint style * feat: 调整案例 * style: lint style * feat: 增加地球图层的默认参数、调整部分代码 * style: lint style * feat: imageTile developinging * style: lint style * feat: 新增图片瓦片地图 * fix: 修复 amap2 新增样式导致的 marker 失效 * feat: 修复 amap2 的 amap-maps 新增 z-index=0; 引发的marker 显示层级失效 * feat: amap2 的 amap-maps 新增 z-index=0; 样式,让 marker 中 zIndex 失效 * style: lint style * feat: 补全瓦片地图中的类型引用 * style: lint style * feat: 取消 earthmap 的 hash 模块 * feat: 调整 L7Mini 版本 * feat: 合并图片瓦片图层 * feat: 增加 imageLayer 的对小程序的兼容 * style: lint style * feat: 修改小程序分支版本 * feat: 更新 l7regl 依赖(补充对支付宝小程序 image 对象的类型判断) * feat: 增加 demo * style: lint style * feat: 修复 varying 传递 float 总数在部分终端设备 ios13 上突破限制的问题 * feat: add stoty demo * style: lint style * feat: 调整 aspace demo * feat: 调整 aspace demo * style: lint style * feat: 调整 demo * feat: 补充依赖 * feat: 新增 arcmini layer,增加拖拽时的拾取优化(地图拖拽时取消拾取) * feat: 增加注释 * feat: 剔除地图拖拽时多余的 shader 计算 * style: lint style * feat: 暂时取消拖拽时 shader 的过滤处理 * style: lint style * feat: 合并 mi nimini * feat: add l7hammerjs * feat: 增加 l7hammerjs 声明 * feat: update version * feat: merge shihui_dev * feat: 去除多余依赖 * feat: 小程序合并 master 无报错版本 * feat: 修改 demo * style: lint style * feat: change l7hammerjs * feat: remove test hammerjs * chore: update verison and get enable branch 2.5.37-mini19 * chore: update version 2.5.37-mini19 -> 2.5.37-mini20 enabled * feat: 去除 hammerjs 的类型定义 - l7hammerjs * style: lint style * feat: 增加类型定义 @antv/l7-maps/lib/map/ * feat: 调整类型定义 * feat: 调整类型定义文件 * feat: change typing * feat: 增加图层渲染列表 layerList 更新图层渲染排序计算 去除夺取 renderTest * style: lint style * feat: 修复一些小程序合并/imageTile 的问题 * style: lint style * feat: 补全漏写的 updateLayerRenderList 排序 * feat: 完善站点构建 增加 @antv/l7-maps/lib/map 的引用 * feat: 增加瓦片地图缩放限制 zoom < 2 * feat: sceneService 小程序适配 window -> $window * style: lint style * feat: 修复 map 在大比例尺地图下精度丢失的问题、更新l7regl、l7eval5 Float64Array * style: lint style * feat: 修复 scene.destroy 在小程序模式下的不兼容 * feat: 修复 scene.destroy 小程序兼容失败 * feat: 适配 utils 中 global * feat: 修复 layer remove repreat emit 'remove' * feat: 增加小程序环境下对地图最大缩放等级的兼容、能放下完整世界地图 * style: lint style * feat: 修改小程序 DPR 适配 * style: lint style * feat: 调整 lineLayer 的网格构建,支持顶点高度的传入 * style: lint style * feat: rendererService 新增方法 * style: lint style * feat: 增加 threejs 案例和方法 * style: lint style * feat: 优化点图层,水波纹点的拾取 * feat: 优化 pointLayer shape 切换时 2d/3d 无法成功切换 * style: lint style * feat: 修复 map 地图类型 zoom > 16 层级时精度丢失问题 * feat: 完善高德地图和 Mapbox 不同地图之间层级和大小表现相同 * style: lint style * feat: 增加风场图层的文件结构 * style: lint style * feat: 增加风场图层 * feat: 修复混合模式导致的风场失效 * style: lint style * feat: 补充销毁方法 * feat: 增加大小控制 Co-authored-by: zhongwu <xingya.sxy@alibaba-inc.com>
2021-12-07 17:31:54 +08:00
pointFolder
.add(styleOptions, 'fadeOpacity', 0.9, 1, 0.01)
.onChange((num: number) => {
layer.style({
fadeOpacity: num,
});
});
pointFolder
.add(styleOptions, 'sizeScale', 0, 2, 0.01)
.onChange((num: number) => {
layer.style({
sizeScale: num,
});
});
pointFolder
.addColor(styleOptions.rampColors, '0.6')
.onChange((color: string) => {
layer.style({
rampColors: {
0.0: '#3288bd',
0.1: '#66c2a5',
0.2: '#abdda4',
0.3: '#e6f598',
0.4: '#fee08b',
0.5: '#fdae61',
0.6: color,
1.0: '#d53e4f',
},
});
});
});
}
public render() {
return (
<>
<div
id="map"
style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
}}
/>
</>
);
}
}