360°全景影像优化建议
传送门???轮子的专栏???转载请注明???http://blog.csdn.net/leverage_1229 1FlexViewer1.1index.mxml ??????????? 它是整个Flex Viewer框架的入口,Flash Player运行时会调用该文件所对应的flash文件来启动整个系统。Index首页加载缓慢,该页面包含大量动态组件,在其加载过程中,这些组件都要经历构建、属性处理、测量、布置和绘制等过程。 1.2QuanJingMapComponent.mxml代码片段 _TextureStrings = new Array(new Vector.<String>,new Vector.<String>); // 一级切片 for(var i:int=0;i<8;i++) { var str:String = url + "_"+ i.toString(); _TextureStrings[0].push(str); } // 二级切片 for(i = 0;i<32;i++) { var str2:String = url + "_"+ i.toString(); _TextureStrings[1].push(str2); } // 将来有三级切片,那么代码会像下面这样 for(i = 0;i<128;i++) { var str3:String = url + "_"+ i.toString(); _TextureStrings[2].push(str3); } ? ? ? ? 目前程序中使用的切片等级有两级,我们以一张全景图像的切片为例,名为TextureStrings的二维数组在存储数据时,会将该图像一级切片的八张图片的名称放置于二维数组的第一行(该行8列),将该图像二级切片的名称放置于二维数组的第二行(该行32列)。第二行前面的8列与第一行8列的数据完全相同。如果扩展到三级切片,那么二维数组的第三行(该行128列)与第二行32列的数据也将是重复的。 TextureStrings这个二维数组用于存放各级切片的图片名称,目前这种做法数据冗余较高,且在onChangeImage函数和onOpenQuanJing函数都会执行。 2WebService代码片段 string strSQL = @"SELECT SLICE_ID,SLICE_NAME,PIC_ID,ALPHA_MAX,ALPHA_MIN,BETA_MAX,BETA_MIN,Z_MAX,Z_MIN,SLICE_CONTENT FROM PIC_SLICE_" + strTableKey + " where SLICE_ID = '" + strID + "'";… // 获取影像源数据 imageData = (byte[])dt.Rows[0]["SLICE_CONTENT"]; Response.ContentType = "application/binary;"; // 将影像源数据写入到客户端FlexViewer Response.BinaryWrite(imageData); … ??????????? 当前WebServices接收客户端请求传递而来的tableKey和sliceId,然后根据这两个参数检索Oracle数据库中全景影像切片PIC_SLICE_1(PIC_SLICE_2、PIC_SLICE_3)表中全部字段,最终将SLICE_CONTENT字段对应的Blob类型的影像数据以二进制的方式返回给客户端实现绘制。 3数据库??????? 当数据量大时,引入ASM(Automatic Storage Management,自动存储服务)机制管理全景影像数据和POI数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |