You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Feb 8, 2024. It is now read-only.
1、 执行L.CanvasLayer.ScalarField.js文件中的构造函数L.canvasLayer.scalarField,创建一个标量层,代码如下:
let globeScalarLayerVelocity = L.canvasLayer.scalarField(null, {
class: 'Globe',
opacity: 0.65
});
其中,class:‘Globe‘ 就是用来设置在跨360°绘制的。
2、 第二个关键函数是L.CanvasLayer.ScalarField.js文件中的 _prepareImageIn 函数,该函数用于构建绘制数据。
其中
let f = (this.options.interpolate ? 'interpolatedValueAt' : 'valueAt') + this.options.class;
是一行关键代码,设置了取数据的方式。
3、 第三个关键函数是 Field.js 文件中的 valueAtGlobe 函数,该函数用于按照“跨360°模式”取数据。
4、 valueAtGlobe(lon, lat) { //added by zxl
5、 let [i, j] = this._getDecimalGlobeIndexes(lon, lat); //根据经纬度获取网格行列号
6、 let ii = Math.floor(i);
7、 let jj = Math.floor(j);
8、
9、 const ci = this._clampColumnIndex(ii); // 判断行列号是否有效
10、 const cj = this._clampRowIndex(jj);
11、
12、 let value = this._valueAtIndexes(ci, cj); //根据行列号获取要素值
13、 if (this._inFilter) {
14、 if (!this._inFilter(value)) return null; //判断该值是否设置了不绘制
15、 }
16、 return value;
17、 }
4、 第四个关键函数是Field.js文件中的 _getDecimalGlabeIndexes(lon,lat)函数,用于将经纬度值转换为网格号
_getDecimalGlobeIndexes(lon, lat) { //added by zxl
if (lon < this.xllCorner) {
let n = Math.floor((this.xllCorner - lon) / 360) + 1;
lon = lon + 360 * n;
}
let offset_i = (lon - this.xllCorner) % 360;
let i = offset_i / this.cellXSize;
let j = (this.yurCorner - lat) / this.cellYSize;
return [i, j];
}
The text was updated successfully, but these errors were encountered: