基于AJAX的电子地图系统

时间:2022-10-25 11:34:48

基于AJAX的电子地图系统

摘要:随着计算机技术飞速发展,传统的纸质地图在表现形式及信息查询方面已越来越难以满足人们对地图的使用需求,如何将互联网用于地图信息管理已成为当前研究的重点。本课题主要研究内容是利用Ajax框架开发“web电子地图系统”,满足用户对地图搜索、定位等功能模块在性能方面上的要求。

关键词:Ajax; web电子地图; Hibernate; LRU

中图分类号:TP399 文献标识码:A文章编号:1009-3044(2007)03-10804-01

1 引言

目前,电子地图的应用越来越普遍,短短几年间,电子地图应用已从少数科研单位和军用部门迅速扩展到能源、交通、铁路、通信、物流、金融、企业、国土资源、市政规划、旅游、网站等各个民用领域。电子地图的广泛应用极大地改变了人们的工作方式,提高了工作效率,带来了巨大的经济效益,具有广阔的应用前景。

Ajax由HTML、JavaScript技术、DHTML和DOM组成,这一架构可以将笨拙的Web界面转化成交互性的Ajax应用程序。它大大增强了Web程序的功能和交互性,使Web程序可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件。Ajax使Web应用的交互有了质的飞跃,提高了用户的体验度。

在本文中,我们将介绍如何使用Ajax架构建造一个电子地图系统。

2 关键技术

2.1 LRU算法

LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,最早是为虚拟页式存储管理服务的。它的基本概念是:当内存的剩余可用空间不够时,缓冲区尽可能的先保留使用者最常使用的数据,换句话说就是优先清除“较不常使用的数据”,并释放其空间。在开发本系统中,地图的缓存管理与内存的缓存管理有一定的相似性,所以本系统使用该算法来管理客户端的缓存。

本系统主要采用了计时法来实现该算法。给客户端区域列表中的每一个区域增加一个域,专门用来存放计时标志,用来记录该区域自上次被访问以来所经历的时间。区域每被访问一次,计时清0。要装入新区域时,从内存的区域中选出时间最长的一页,调出,同时把各区域的计时标志全部清0,重新开始计时。

2.2 Ajax框架

Ajax框架包括了一系列技术,它大大增强了浏览器与用户的交互性。在Ajax之前,Web站点和用户的交换模式是“进入->提交->等待->重新显示”,只有通过用户动作,才能让服务器进行运算。Ajax却可以让浏览器与服务器进行异步通信,从而使用户从上述模式的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新用户界面,并向服务器发出异步请求,以执行更新或查询数据库。

虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的才开始真正流行起来,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript模式,使得B/S系统具有像C/S系统的操作性。

2.3 Hibernate

Hibernate是一个面向Java环境的对象/关系数据库映射工具。在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。

3 地图系统模块设计与实现

系统结构如图1所示。整个系统由下面四个模块组成――客户端的地图显示操作系统和地图缓存模块,连接服务器端和客户端的数据传输模块,在服务器的数据库查询模块。

图1 地图系统结构图

3.1 地图显示和操作模块

地图显示模块和操作模块负责地图的显示与操作,如地图移动、放大、缩小、定位等。它根据客户的操作,先从缓存中搜索相应的地图数据,如果缓存中没有对应的地图数据,那么缓存模块就会向数据库查询模块发送请求,获得当前的地图数据。数据的传输均通过xml流的格式进行传输。系统界面如图2所示。

图2系统界面图

在该模块我们借助了Ajax,可以在用户操作时候,使用JavaScript和DHTML立即更新地图信息,并向服务器发出异步请求,以执行更新或查询缓存与数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新页面,而不是刷新整个页面。这样大大地减少了系统的响应时间。

3.2 地图缓存模块

地图缓存模块用于存储地图数据,提高系统的效率,降低反应时间。当用户访问地图的某一区域时候,系统将会读取该区域临近区域的数据,储存在缓存中,方便用户查询。而用户查询的时候系统会先从缓存中读取,如果不能命中,系统会向数据库查询模块发送请求,查询地图数据。而当用户在操作地图的同时,系统会自动从后台的服务器中读取数据,存储到缓存中,而这个时候用户是根本没有意识到浏览器正在与服务器通信。而用户访问其他的区域的时候,访问就会变得非常流畅。

本系统采取了LRU算法,动态置换缓存中的内容。LRU算法的提出,是基于这样一个事实:在前面一系列操作中使用频繁的区域很可能在后面的操作中频繁使用。反过来说,已经很久没有使用的区域很可能在未来较长的一段时间内不会被用到。这个,就是著名的局部性原理。所以在每次调换时,找到最近最少使用的那个区域调出内存。这就是LRU算法的全部内容。

3.3 数据传输模块

在数据传输模块中,使用了JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

所有的数据均采用xml的格式进行传送,当客户端向服务器发送请求的时候,服务器端会返回一段xml,格式如下所示。

地图显示模块将会解析这些xml,然后显示在客户端的界面上。

3.4 数据库查询模块

数据库查询模块根据客户端的请求,查询数据库,然后将查询结果通过传输模块发送到给客户端。我们使用了Hibernate框架。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。数据库的框架如图3所示:

图3 数据库框架图

如上图所示,Hibernate通过JNDI、JDBC、JTA来与数据库连接。通过Hibernate session打开一个数据库的连接。在一个Session中,每个数据库操作都是在一个事务(Transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。系统通过Persistent Objects(持久化对象)来对应数据库对象。这样,系统就把数据库层与事务层分割开来。从而产生的代码更易于维护。

4 结束语

构建电子地图系统是一项复杂的工作,本文对基于Ajax架构构造电子地图系统进行了研究,并且提出了实现框架。利用Ajax架构,可以大大提高系统的功能性和交互性。利用缓存机制,能够大大增加系统的效率和灵活性。总的来说,本系统满足了一般用户对地图查询、搜索以及定位等基本功能要求,为开发web电子地图提供了一个实用的参考模型。

参考文献:

[1]Jesse James Garrett. Ajax: A New Approach to Web Applications. Adaptive Path,2005,2.

[2]Lopriore, Lanfranco. Access privilege management in protection systems[J]. Information and Software Technology, 2002, 44(9): 541-549.

[3]Roberts, Christopher B. The Impact of Information Technology on the Management of System Design[J]. Technology in Society, 1996,18(3): 333-355.

[4]Ray, Indrakshi; France, Robert; Li, Na; Georg, Geri. An aspect-based approach to modeling access control concerns[J]. Information and Software Technology, 2004, 46(9): 575-587.

[5]胡卫明. 大幅面地图的快速自动地形晕渲[J]. 计算机学报,2002,25(11):1212-1218.

[6]霍炬. Ajax Web 2.0的催化剂[J]. 程序员, 2005,12:84-85.

[7]梁民. 基于AJAX技术开发web应用[J]. 电脑知识与技术, 2006,2:119-119,193.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:普通小哨兵还原卡在局域网中的应用探索 下一篇:“ちょっと”与独词句的机器翻译