嗃矢(基于栅矢结合的WebGIS脚本库设计与实现)
网络地理信息系统是互联网技术应用于地理信息系统发展的产物[1]。自谷歌成功推出谷歌地球以来,网络地理信息系统开始从专业领域的企业级应用向大众化应用转变,一大批基于网络的地图服务开发商和产品如雨后春笋般涌现。在实际开发中,应根据实际需要和情况选择不同的开发模式。结合MAPGIS IMS脚本库,地图显示流程图的设计如下:1)初始化
map=im maps(“ZD dims”,imsmapconfig)://哎哎哎哎地图。添加控件(im导航,);//是真的吗地图。添加控件(imeaglemap、……);//关于地图。添加控制(im操作状态,……);//诶诶哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟地图。添加控件(imloader、……);//贺尔菲阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉阿吉地图。添加控件(imscale、……);//阿忠map.addcontrol(RtMenu、……);//你好
.//其他用户界面比如对2)创建地图DOM结构,也就是说,各种不同的DIV层。简单绘制查询和测量地图容器网格地图容器2矢量地图覆盖随地图移动的图层,如:flash、总线传输等。3)添加各种事件监控,如鼠标、键盘、调整大小、卸载等。4)确定地图类型是栅格地图还是矢量地图,并给出不同的处理方法,如如图2所示。3地图数据的组织对是地图中栅格地图的组织。我们采用瓦片金字塔模型,这是一个多尺度(或多分辨率)的层次结构模型。金字塔模型中每层地图的比例从金字塔模型的顶部向下逐渐增加2的倍数[4]。如如图3所示,0层图块应该具有最小的对。当地图逐渐放大时,依次显示1层和2层图块。为了提高地图数据在网上的显示速度,相应地,我们采用对栅格地图的表格形式组织网页。网页中的表格和图块金字塔模型应该在对和如图4中显示,每个表格应该是对,的每个图块,表格中的阶段数应该是对图块中的层数。这种组织的优点是,一方面,地图被分成几个图块,并且只请求和显示所需的图块,这有利于数据组织和调度;另一方面,当用户移动地图时,仅需要对的一些新区域中的瓦片,并且所请求的瓦片数据被保存在高速缓存中,这便于下一次读取,从而减少了对服务器的数据请求次数和工作量。4关注问题在脚本库的设计和开发中,我们还应该尽可能地考虑和关注以下问题。1)根据实际的规模和应用,我们应该尽力使界面使用合理,包装方便。2)尽量实现低内聚力和高聚合度。例如,避免在不同的类中调用全局变量,并尽量避免监视一个类中另一个类的操作或事件。3)尝试重构代码,精简和优化脚本,并减小文件大小。4)尝试支持在一个页面上共存多个地图分区。例如,脚本添加名称空间,保证变量的唯一性,不为DOM节点的标识属性赋值,并尝试改变直接调用DOM节点的标识,将它们赋给变量,然后调用变量。5)版本发布最好分为开发版本和发布版本。开发版本需要完整的注释和标准排版,用于内部开发和版本维护;该版本要求清除注释、添加版权声明、阻止类模块、不包装代码或使用模糊化软件的对版本进行模糊化。6)尽可能注意浏览器的兼容性。至少它需要与当前主流浏览器兼容,如IE6|7|8、FireFox2.0|3.0|3.5,并考虑与safari3.0、Opera9.0、Chrome等兼容。7)尽可能注意脚本库代码的标准化。关于脚本库代码的规范,请参考《Dojo Javascript编程规范》 [5],这是一个相当非错Javascript编程风格的规范。本规范制定了核心应用编程接口风格、推荐使用风格、命名规范、特殊命名规范等。包括对文件、变量、块、空格、注释、文档、函数、参数、返回值、伪代码等。