forked from iSpring/WebGlobe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathversions.txt
executable file
·158 lines (85 loc) · 11.6 KB
/
versions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
0.0.4.4 优化了判断切片是否可见的算法,使用经纬度判断法(isTileVisible2)取代了老式的计算方法(isTileVisible)
0.0.4.5 继续优化isTileVisible算法,许多参数从函数外面传递进来,比如geoExtent和projViewMatrix,循环传递使用,减少了生成这两个变量所调用函数的次数;引入了World.Globe,将一些处理逻辑放到了Globe中,比如讲renderer中的updateGlobe方法迁移到Globe中的refresh方法,尽量只对二次开发人员暴露World.Globe的接口,更合理一些,从而将版本从0.0.4.4升级到0.0.4.5
0.0.4.6 不再通过ajax获取vertexShader和fragmentShader的文本内容,而是将其以字符串的形式直接放入到World.js文件中(World.ShaderContent),从而减少了对于其他GLSL文件的依赖,并因此将World.js的版本升级到0.0.4.6
0.0.4.7 新增了World.TiledLayer类型,取消掉了World.NokiaTile等类型,图层都继承自World.TiledLayer,并重写其中的getImageUrl方法,所有的切片都放到World.TiledLayer中进行管理,结构化明确,更加面向对象,因此将版本升级到0.0.4.7
0.0.5.0 从0.0.4.7直接升级到0.0.5.0,在TiledLayer的基础上又增加了SubTiledLayer类,并在此基础上优化了诸多算法,包括通过添加isvisible判断是否渲染,完善了camera的getCurrentGeoExtent算法,结构更合理,访问速度更快,故升级到0.0.5.0
0.0.5.1 优化了各种TiledLayer的getImageUrl的算法
0.0.5.2 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
通过执行以上命令消除了两个切片之间的白线问题
0.0.5.3 从0.0.5.2升级到0.0.5.3:globe中增加了calculateCameraMoveInfo方法,在大比例尺下移动视图也比较正常
0.0.5.4 升级到0.0.5.4:在World.Object3D的destroy方法中释放了显卡中的各种buffer和texture资源
0.0.5.5 在render方法中计算了viewMatrix并赋值给camera作为其中的一个属性,这样就只调用一次getViweMatrix方法,不用在draw(camera)中再多次计算
0.0.5.6 在创建level为1的subTiledLayer的时候就全部创建其下的四个切片,并且从不删除该subTiledLayer;将自动更新时间设置为750毫秒
0.0.5.7 添加了World.BingTiledLayer,支持微软Bing地图渲染(有三种风格:a、r、h)
0.0.5.8 添加了World.SosoTiledLayer,支持soso地图
0.0.5.9 添加了World.TiandituTiledLayer,支持天地图
0.0.6.0 通过添加代理页proxy.jsp可以加载ArcGIS的切片地图,包括ArcGISOnline以及捷泰地图,或其他ArcGIS Server发布的地图服务
0.0.6.1 通过代理方式支持高德地图
0.0.6.2 用bind方式代替闭包实现World.TextureMaterial.prototype.setImageUrl中handleLoadedTexture操作texture
0.0.6.3 在Matrix和Object3D中加入对worldScale和localScale的支持
0.0.6.4 在Matrix和Object3D中加入对localRotateByVector的支持
0.0.6.5 修复了在层级比较大的情况下切片不能完全正常匹配的问题,解决办法是取消掉了对切片范围的一像素扩容
0.0.6.6 将World.Scene继承自World.Object3DComponents,减少冗余代码,结构也更合理,也因此调整了World.js中各代码块的位置
0.0.6.7 在拖动鼠标时,鼠标拖动点与经纬度进行了绑定,实现定点拖动
0.0.6.8 将CanvasEventHandler.js中的事件代码移植到World.Event中,以后在html页面中只需要引入World.js一个js文件即可
0.0.6.9 修改了camera中的isLonVisible方法,将其精简完善,从而解决了在伦敦中央经线附近在14级时一片漆黑的问题
0.0.7.0 修改了无法删除canvas的onMouseMove事件的问题
0.0.7.1 修改了将视图缩放到中国区域范围的时候,camera.getGeoExtent()获取的经纬度不准确的问题,原因是在计算由于地球自身视线遮挡的经度范围时,只是简单的在中心经度上加减偏移量,对于如果中心点的纬度为0时是正确的,只要中心点纬度不为0,这种简单的加减经度偏移量是不准确的
0.0.7.2 完善了各种坐标系之间坐标的换算
0.0.7.3 基本完成camera.getExtentInfo的编写,准备用其替换camera.getGeoExtent方法,并添加了camera.isGeoVisibleInCanvas方法
0.0.7.4 继续晚上camera.getExtentInfo方法,在沿着经线上下偏移纬度时不准确,比如65+40=105>90,导致其超出[-90,90]的范围,现在会确保其范围是正确的,但是有可能把范围算大了
0.0.7.5 完成camera.getExtentInfo方法的重写,并对老旧代码删除,用新代码替换老代码
0.0.7.6 以前为了优化效率,在很多地方设置了SubTiledLayer的isvisible和Tile的isvisible都为false,但是体验效果却不好,经常会拿level1来作为保底图层;现在只要camera变化了就将所有SubTiledLayer和Tile的isvisible都设置为true,体验效果好,只有在camera位置没有发生变化,且level最大的那级图层的所有切片都已加载的情况下(即SubTiledLayer.checkIfLoaded为true)时才会将无需显示的那些SubTiledLayer的isvisible属性置为false
0.0.7.7 将MAX_LEVEL、CURRENT_LEVEL、BELOW_LEVEL、OLD_POSITION属性从World中迁移如World.Globe中,更合理
0.0.7.8 完善了onMouseMove事件代码,提供与Google New Map一样的体验
0.0.7.9 修改完善了getPickDirectionByNDC方法,ndcZ传入0.1而非0.5,0.5在某些情况下会导致计算的w为0
0.0.8.0 将ndcZ最终改为0.499,没发现问题;并且在camera.isTileVisible方法内通过判断切片斜对角线的长度是否均小于0.1来决定不可见或可见,这对于倾斜视角下很有用,会剔除掉那些面积很小的切片,直接用面积比较不如用斜对角线长度比较实用,并因此在任意时刻都渲染全部的切片,去掉了checkIfLoaded的优化代码
0.0.8.1 打算重写算法,添加了两个重要的方法camera.getVisibleTilesByLevel和getTileVisibleInfo,直接从第level级获取可见的切片,无需从第0级依次遍历
0.0.8.2 重写了算法,不再根据经纬度依次从第1级开始判断,直接通过camera.getVisibleTilesByLevel获取第level级别的可见切片,即使缩放到20级,内存也在170M左右,而且很流畅,删除了以前的老代码,实现重大升级
0.0.8.3 加入World.Elevation代码,用于请求高程数据,开始改造Object3D和Tile的相关方法,使其能根据传入的vertice等信息动态更改buffer
0.0.8.4 实现最最基础的三维地形图
0.0.8.5 上一版本的World.Elevation.getElevationByCache有问题,现在已修改完善,正确计算切片高程的起点索引值
0.0.8.8 重写了Tile.handleTile方法,将老的方法命名为handTile2,但没有删除,新的handleTile方法从左上角至右下角遍历,并且多个三角形公用同一个顶点
0.1.0 将Globe.js拆分成多个AMD模块,AMD代码放在js目录下;并将AMD代码用TypeScript重新实现,放到ts目录下,并对原有AMD的代码进行微调:解除了Vertice与Vector之间的相互引用,解除了Math与TileGrid之间的相互引用;通过gulp分别实现了对AMD和TypeScript代码进行编译压缩,通过requirejs均可加载相应bundle代码
0.1.1 在js和ts中均修复了在两极地区抖动的问题:world/Event#moveGeo()
0.2 引入World.js中的许多类的设计理念,包括Program、GraphicGroup、Graphic、Geometry、Material、VertexBufferObject等,现在SubTiledLayer和TiledLayer都继承自GraphicGroup,并且让Tile继承自于Graphic
0.2.1 修复了在leve 15及以上的情况下,拖动地图导致地图空白的问题,见issue#9
0.2.2 删除高程相关代码
0.2.3 将world/geometries/Geomtry重命名为world/geometries/Mesh,并在package.json中添加了多个npm scripts,对应gulp中定义的tasks
0.2.4 之前EARTH_RADIUS的值为6378137,特别大,导致了深度值计算有问题,从而使得深度测试不能正常进行。将EARTH_RADIUS改成14000,使得深度测试可以正常进行。并加入了Poi和PoiLayer这两个类。
0.3.0 将EARTH_RADIUS从14000改为500,在0-10级的时候,通过改变Camera的position实现缩放,在10级之后通过改变fov实现缩放。
Camera中所有的计算(比如计算视野中的可见切片)都是基于matrix、viewMatrix、projMatrix和projViewMatrix。
但是实际传递给shader用于绘图的是projViewMatrixForDraw。Camera.getPickCartesianCoordInEarthByCanvas()方法也是基于projViewMatrixForDraw系列矩阵的。
该版本提高了深度值的精度,基本解决了z值精度问题。在update()方法中会计算projViewMatrixForDraw系列矩阵。
0.3.1 使得Globe.animateToLevel()可以在0.3.0的版本上运行,解决办法是引入了camera.animationLevel,其值是非整数。
0.3.2 优化了Camera.update()方法,只有发生用户交互的情况下才实际进行计算。
0.3.3 优化了Globe.refresh()方法,只有发生用户交互的情况下才重新计算可见切片。
0.3.4 增加了Atmosphere效果。
0.3.5 优化了切片加载的算法:
1. 当MeshTextureMaterial执行destroy的时候,取消掉原有的图片请求;
2. 当缩放的时候,不会请求父级别以及父父级别的切片。比如缩放到第15级的时候,不再请求第13和14级的切片,但是会请求12级及以前的切片,减少了图片请求的数量。
0.3.6 使得PoiLayer能基本搜索POI并将其显示;
为IE11等浏览器添加ES6方法的polyfill;
在Matrix中用Float64Array存储数据,并同时提供getFloat32Array()方法以便给Shader传递Float32Array类型的数据(Shader不支持Float64Array)。
0.3.7 删除Poi类,并让PoiLayer继承自Graphic,每次OnDraw()的时候将所有poi点的坐标动态赋值给buffer,大幅减少了绘图命令的调用,提高了FPS。
0.3.8 在TiledLayer中为program中的uniform变量设置值,减少了WebGL命令的调用次数。
0.3.9 用webpack代替gulp作为打包工具
0.3.10 每次渲染之前都会检查Camera是否发生变化,如果变化则更新切片列表,并且保证Canvas八个角点都有保底的可见切片,不再从level1全部渲染切片,减少WebGL绘图命令
0.3.11 修复了0.3.10里面的一个bug
0.3.12 使得GoogleTiledLayer可以使用,并且为GoogleTiledLayer和OsmTiledLayer增加了多种Style
0.3.13 添加LabelLayer和AutonaviLabelLayer,叠加GoogleTiledLayer,取得了较好的效果
0.3.14 在移动端浏览器上面可以通过手势缩放
0.3.15 添加了TrafficLayer、SosoTrafficLayer、QihuTrafficLayer,可以查看实时交通
0.3.16 使得QihuTrafficLayer可以运行
0.3.17 添加Location模块,监听位置变化
0.3.18 在Camera中增加了resolution相关的方法,并可以通过Camera.getBestDisplayLevel()方法获取当前摄像机位置下最优的显示层级的切片
0.4.0 1. 去除了level和lastLevel的概念,只保留一个概念:renderingLevel,renderingLevel即相当于之前的lastLevel,表示最后渲染切片的级别;
2. 增加了calculateDistance2EarthOriginByResolution()和calculateResolutionAndBestDisplayLevelByDistance2EarthOrigin()等相关方法,
并依据这些方法完成Camera位置与renderingLevel之间的映射
0.4.1 将renderingLevel重命名为level,将set/getRenderingLevel()重命名为set/getLevel()
0.4.2 重命名Camera中的相关方法
0.4.3 向Camera添加isEarthFullOverlapScreen()等方法
0.4.4 默认显示当前位置
0.4.5 添加Travis CI服务,在每次push代码的时候进行测试,在README.md中添加了各种Badge
0.4.6 增加了GlobeOptions类,为Globe构造函数传递参数