百度地图API在JBoss Seam中的研究与应用

2014-10-17 16:42杨凯贺卫东肖媛娥
电脑知识与技术 2014年26期

杨凯 贺卫东 肖媛娥

摘要:通过研究JBoss Seam这个将 EJB、JSF、AJAX等深度整合的应用程序框架,开发了弱电管道管理系统,并成功的将百度地图应用在JBoss Seam上。分析对比了传统的两种地图发布的数据传递方式,研究了将JBoss Seam的地图数据传递到百度地图API的方法。将系统中管道的具体位置和详细信息标注在百度地图上,实现管道系统在百度地图上发布,方便日后的管道管理和维护工作。

关键词:JavaScript;管道管理系统;JBoss Seam;百度地图API

中图分类号:TP393.09 文献标识码:A 文章编号:1009-3044(2014)26-6096-03

Abstract:By researching the JBoss Seam application framework that integrate EJB,JSF,AJAX and so on ,We developed a weak current pipeline management system,and use Baidu map in JBoss Seam.Analyzed and compared the two traditional way to transfer the map data. Researched the method transfer the map data of JBoss Seam to the Baidu map API.Identify the specific location of the pipeline and detailed information on the baidu map and release pipeline system in baidu map.It can facilitate the pipeline management and maintenance work in future.

Key words:JavaScript; pipeline management system; Java Seam; Baidu map API

随着电子地图和网络技术的不断发展,为建立一个地理信息服务提供了诸多的解决方案。例如:Google 地图和百度地图等都是现如今非常著名的电子地图。这些面向普通用户所提供的地理信息服务一般采用B/S或C/S的构架方式[1],但其服务并不能直接应用在JBoss Seam应用框架上。

Google地图和百度地图等都发放了针对其自身的应用程序接口API(Application Program Interface)。其中百度地图API提供了多种API,有JavaScript API、Flash API以及静态图API等。百度地图的API能够帮助开发者快速现在地图上添加Marker、自定义信息窗口、标注相关开发、快速加载城市列表、拉框放大、拉框搜索、区域限制设置、几何运算、交通流量等功能。

弱电管道管理系统基于JBoss Seam应用框架开发,这里选择百度地图的JavaScript API,JavaScript API是一套由JavaScript 编写的应用程序接口。它能够帮助您在网站中构建功能丰富、交互性强的地图应用,而且百度地图的全中文和本地化更符合本系统的要求。百度地图API包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务,百度地图的兼容性也很好,它不仅支持IE、Firefox、Chrome等浏览器还能够支持跨越操作系统(Windows、Mac、Linux)和跨平台(iPhone、android)的操作[2]。

利用百度地图的API搭建弱电管道系统的WebGIS平台,和其他的WebGIS一样,同样采用三层架构来搭建即客户端、应用服务器和数据库服务器。其中客户端主要实现查询和浏览功能,应用服务器处理来自客户端的查询和浏览应用请求,而数据库服务器主要用于存储各种地理信息数据。该文主要采用的API为如下:

1) 地图主控件:负责与地图的交互的基本的不可缺少的控件。如地图平移缩放控件。

2) 事件监听:JavaScript是用程序来监听相应的事件,并通过生成事件来驱动交互的响应[3]。

3) 覆盖物控件:叠加或覆盖到原始地图上的内容,可以额外的添加点、线或标注信息等。

4) 导航控件:在两点之间寻求可行的最短路径,通过折线段标识出来。

1 技术路线

基于百度地图API接口实现空间数据发布,需自定义XML文件作为中间桥梁,将数据库中的本地数据转化成可供百度地图API解析的数据格式,然后通过JavaScript API调用百度地图,并在地图上标注,实现本地数据在百度地图上的发布[4]。

2 关键技术

2.1 事件监听

在地图中的主要操作如查看标注信息、地图放大等一般需要通过鼠标操作来实现,如何让地图的控件监听到当前对地图的操作是将本地信息发布到百度地图上的基础。百度地图API中的大部分对象都含有事件监听方法,可以通过该方法来监听对象事件[5]。方式为:

1) 添加事件监听:source.addEventListener(“event”,function);其中source表示监听的对象,通常是地图对象(map)或标注对象(marker),event表示监听到的操作,主要有click、dblclick、drag、mousedown、mouseover等,而function则是监听触发后所要调用的事件函数[6]。例如向地图添加监听事件使每当用户点击地图时,会弹出一个警告框:map.addEventListener("click", function(){ alert("警告!");});

2) 移除事件监听:同添加监听一样,每个API对象提供了 removeEventListener用来移除事件监听函数。source.removeEventListener(“event”,function);用法类似添加事件监听。例如:map.removeEventListener("click", showInfo);在地图函数中移除事件监听,使得后续的点击操作不会触发监听函数。

2.2 使用XML文件传递数据

读取目标点的地理坐标和属性并在地图的对应位置上标注出来,通常有两种可行的方法。

方法1 :XML文件解析技术。从数据库中读取信息并写到XML文件中,然后使用百度的接口函数解析XML文件,将存储在XML文件中的数据读取并赋值给函数的局部变量。但如何生成储存了地理坐标和属性的XML文件是这种方法的关键。通常的方法是直接使用Dataset方法自带的WriteXml函数[7]。但是使用这种方法生成的XML文件在百度地图下有时无法解析。

方法2 AJAX技术(异步加载)。该技术是用XMLHttpRequest通过异步方式与Web服务器数据交换,在数据交换的过程中可以不刷新页面而直接进行数据的读取[8]。但是该方式对于读取小数据优势比较明显。对于弱点管道系统,所需要在地图上展示的信息很小,所以采用此方法是一个很好的选择。3 弱电管道系统的设计

经过对系统的需求分析,设计的系统具有的主要功能有:数据的录入、数据查询、位置查询等功能。用户在百度地图上浏览位置信息时可以通过单击地图标识来查看详情。

3.1 系统的功能设计

弱电管道系统的功能主要包括:

1) 在百度地图中查看管道元素。

2) 查询功能,实现在管道系统中查询相应的管道元素。

3) 添加功能,实现对新数据的采集录入并存储在数据库中。

4) 发布功能,实现本地数据库信息数据在百度地图上发布。

3.2 数据库设计

百度地图的卫星地图可实现17级的缩放,它的精确度能达到0.5m,大部分地区几乎所有的建筑和树木都在百度地图上清晰的可辨。作为管道原型系统,地图数据主要采集井孔的信息。

系统数据库共设6张数据表,其中5张表用来记录弱电管道的的属性和管道之间的关联信息,另1张用来记录井孔的属性。井孔属性表用来记录井孔的地理位置信息,它是实现系统地图显示的核心表单。

4 总结

本文提出了一种利用百度地图的开放平台实现空间信息的查询技术,采用该技术可实现在利用百度地图上完成位置的便捷查询定位,并在查询的同时能够方便的查看属性信息。该文为构建基于Seam Framework开发WebGIS提供技术依据,并低成本的WebGIS平台提供了直接可用的参考。

参考文献:

[1] 孟令奎,史文中,张鹏林,网络地理信息系统原理与技术[M].北京:科学出版社,2005:76-90.

[2] 百度在线网络技术(北京)有限公司.百度地图JavaScript API开发指南[EB/OL].(2012-11-29) [2012-12-31].http://developer.baidu.com/map/js-download.htm.

[3] 孙晓茹,赵军.Google Maps API在WEBGIS中的应用[J].微计算机信息,2006,22(19):224-226.

[4] 刘伟.基于JSF/EJB3的JBoss Seam应用框架研究与应用[J].电脑知识与技术,2012(30):7236-7239.

[5] 杜传明.百度地图API在小型地理信息系统中的应用[J].测绘与空间地理信息,2011,34(2):152-153,156.

[6] 白学文,杨红,杨韬.基于百度地图API发布乡镇精细化天气预报[J].云南科技管理,2012,25(1).

[7] 张胜,钟世明,朱才连.基于XML的WebGIS构架的设计与实现[J].武汉理工大学学报:交通科学与工程版,2005,29(2):304-307.

[8] 周宇林,付忠良.基于Google地图API的空间信息发布[J].计算机应用,2011,31(5):1450-1452.