Shihui dev (#830)

* 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

* chore: update version 2.5.43 -> 2.5.44

* feat: 修复一些小程序合并/imageTile 的问题

* style: lint style

* feat: 补全漏写的 updateLayerRenderList 排序

* feat: 完善站点构建 增加 @antv/l7-maps/lib/map 的引用

* chore: update version 2.5.45 -> 2.5.46

* feat: 增加瓦片地图缩放限制 zoom < 2

* feat: sceneService 小程序适配 window -> $window

* style: lint style

* feat: 修复 map 在大比例尺地图下精度丢失的问题、更新l7regl、l7eval5 Float64Array

* style: lint style

Co-authored-by: zhongwu <xingya.sxy@alibaba-inc.com>
This commit is contained in:
YiQianYao 2021-11-09 21:01:45 +08:00 committed by GitHub
parent b1737075d4
commit 3f6f344067
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 17 deletions

View File

@ -742,6 +742,10 @@ export default class Transform {
* @private
*/
public pointLocation(p: Point) {
// if(p.x !== 0 && p.x !== 1001) {
// console.log(p.x)
// }
return this.coordinateLocation(this.pointCoordinate(p));
}
@ -935,40 +939,47 @@ export default class Transform {
const nearZ = this.height / 50;
// matrix for conversion from location to GL coordinates (-1 .. 1)
let m = mat4.create();
// TODO: 使用 Float64Array 的原因是为了避免计算精度问题、 mat4.create() 默认使用 Float32Array
let m = new Float64Array(16);
// @ts-ignore
mat4.perspective(m, this._fov, this.width / this.height, nearZ, farZ);
// Apply center of perspective offset
m[8] = (-offset.x * 2) / this.width;
m[9] = (offset.y * 2) / this.height;
// @ts-ignore
mat4.scale(m, m, [1, -1, 1]);
// @ts-ignore
mat4.translate(m, m, [0, 0, -this.cameraToCenterDistance]);
// @ts-ignore
mat4.rotateX(m, m, this._pitch);
// @ts-ignore
mat4.rotateZ(m, m, this.angle);
// @ts-ignore
mat4.translate(m, m, [-x, -y, 0]);
// The mercatorMatrix can be used to transform points from mercator coordinates
// ([0, 0] nw, [1, 1] se) to GL coordinates.
this.mercatorMatrix = mat4.scale(mat4.create(), m, [
// @ts-ignore
this.mercatorMatrix = mat4.scale([], m, [
this.worldSize,
this.worldSize,
this.worldSize,
]);
// scale vertically to meters per pixel (inverse of ground resolution):
mat4.scale(
m,
m,
vec3.fromValues(
1,
1,
mercatorZfromAltitude(1, this.center.lat) * this.worldSize,
),
);
// @ts-ignore
mat4.scale(m, m, [
1,
1,
mercatorZfromAltitude(1, this.center.lat) * this.worldSize,
1,
]);
// @ts-ignore
this.projMatrix = m;
this.invProjMatrix = mat4.invert(mat4.create(), this.projMatrix);
// @ts-ignore
this.invProjMatrix = mat4.invert([], this.projMatrix);
// Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles.
// We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional
@ -982,37 +993,52 @@ export default class Transform {
const angleSin = Math.sin(this.angle);
const dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift;
const dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift;
const alignedM = mat4.clone(m);
// const alignedM = mat4.clone(m);
const alignedM = new Float64Array(m);
// @ts-ignore
mat4.translate(alignedM, alignedM, [
dx > 0.5 ? dx - 1 : dx,
dy > 0.5 ? dy - 1 : dy,
0,
]);
// @ts-ignore
this.alignedProjMatrix = alignedM;
// @ts-ignore
m = mat4.create();
// @ts-ignore
mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);
// @ts-ignore
mat4.translate(m, m, [1, -1, 0]);
// @ts-ignore
this.labelPlaneMatrix = m;
// @ts-ignore
m = mat4.create();
// @ts-ignore
mat4.scale(m, m, [1, -1, 1]);
// @ts-ignore
mat4.translate(m, m, [-1, -1, 0]);
// @ts-ignore
mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]);
// @ts-ignore
this.glCoordMatrix = m;
// matrix for conversion from location to screen coordinates
this.pixelMatrix = mat4.multiply(
mat4.create(),
// @ts-ignore
new Float64Array(16),
this.labelPlaneMatrix,
this.projMatrix,
);
// inverse matrix for conversion from screen coordinaes to location
m = mat4.invert(mat4.create(), this.pixelMatrix);
// @ts-ignore
m = mat4.invert(new Float64Array(16), this.pixelMatrix);
if (!m) {
throw new Error('failed to invert matrix');
}
// @ts-ignore
this.pixelMatrixInverse = m;
this.posMatrixCache = {};

View File

@ -29,7 +29,7 @@
"@antv/l7-core": "^2.5.46",
"@babel/runtime": "^7.7.7",
"inversify": "^5.0.1",
"l7regl": "^0.0.15",
"l7regl": "^0.0.16",
"lodash": "^4.17.15",
"reflect-metadata": "^0.1.13"
},