(1.桂林理工大学测绘地理信息学院,广西桂林 541004; 2.广西空间信息与测绘重点实验室,广西桂林 541004)
傅毓1,2∗,李景文1,2,王辉1,2,陈俊任1,2
基于Google Map的轻量级企业信息标注系统设计方法
(1.桂林理工大学测绘地理信息学院,广西桂林 541004; 2.广西空间信息与测绘重点实验室,广西桂林 541004)
从中小企业的发展需要出发,采用面向服务的结构,利用AJAX技术与Google Map API的天然结合性及Web Service技术设计了基于Google Map的轻量级企业信息标注系统,探讨了基于Google Map的轻量级系统的设计与实现方法,并在此基础上实现了南宁市企业信息标注系统以及基于Google Map的企业信息的空间查询。
企业;AJAX;Google Map;Web Service
在线地图服务的多样化应用给中小型企业的发展带来了新的机遇。企业可以通过在线电子地图直观地展示自身的业务、产品以及地理位置等信息,使用户能够轻松及时地查询到自己感兴趣的企业相关信息,同时为政府的决策提供数据支撑,因此如何搭建一个具有良好用户体验、快速响应速度以及高扩展性的基于WebGIS的企业标注信息系统显得尤为重要。众多的学者对WebGIS系统的设计方法[1~4]、信息传输的办法[5]以及地图的空间分析方法[6~8]做了大量研究,但在实际应用中仍然存在系统过大、软硬件要求较高、数据量偏大等问题。本文针对中小企业发展的实际需求及现有WebGIS技术存在开发平台庞大、需要大型的空间数据库和复杂的GIS服务器支持的问题,以Google Map为基础,利用AJAX的异步刷新的特性构建客户端,采用Web Service技术搭建服务端,选用了轻量级JSON数据格式作为数据传输与交换的中间格式,设计了基于Google Map的轻量级的企业信息标注系统,将企业信息与Google Map地图服务相结合,并将其应用于南宁市企业信息标注系统,使企业可在地图上标注个性化信息,为基于在线地图服务的WebGIS实际应用提供了较好的参考。
在系统开发过程中,轻量级与重量级之间的区别在于架构与对象耦合度及对象是否很难脱离架构运行。轻量级系统的优势在很大程度上呈现为开发速度快,不需要部署一个很庞大的容器系统就可以实现以前需要容器才能实现的功能,不需要做太多的工作就可以搭建系统,这些特性对于开发人员来说非常有吸引力。因此轻量级主要体现在以下几个方面:系统规模较小;能快速开发;系统涉及的客户端操作通过JavaScript调用DOM接口实现,很少与服务器交互[6]等特性。根据轻量级系统的特性,基于Google Map的轻量级企业信息标注系统采用SOA(面向服务的体系架构),通过Web Service发布服务,服务使用者调用发布的服务,在客户端与Google Map地图服务混搭,实现企业信息的图上标注与展示。该系统将SOA优点和实际应用相结合,不仅具有WebGIS应用的基本功能,而且还可根据相关算法实现空间分析查询功能等。
2.1 基于AJAX引擎的客户端设计
AJAX引擎相当于在客户端和服务端中搭建一个桥梁,使客户端与服务器响应异步化,其架构如图1所示。通过AJAX引擎向服务端发送请求时,每次只和服务端交换需要的数据,避免客户端对服务器的请求致使浏览器页面或地图整个刷新,加快了页面的响应速度。当发送请求时可预先读取客户端缓存,这样可平衡客户端与服务端的压力。AJAX引擎主要实现XMLHttpRequest对象的生成,用于发送和接收JSON数据包;根据Web Service接口的地址向服务端发送调用所需的参数及参数值;使用Eval()函数将返回的JSON数据包转换为JSON对象,并按照一定的规则读取数据;针对地图与企业信息进行的动态更新、属性操作的异步查询和结果处理或完成前台数据验证、动态加载列表框等页面控件中的内容以及创建工具提示、提供表单自动完成等。
图1 客户端架构图
2.2 基于Web Service的服务端设计
Web Service简单来说就是一个对外的接口,里面有函数可供外部用户调用。使用Web Service将数据通过Web服务的形式提供给用户,隐藏了软件运行的平台差异、屏蔽了软件之间数据结构的差异,并且任何客户端都可以通过授权调用相关的服务。在基于Google Map的轻量级的企业信息标注系统中采用Web Service作为服务端,其封装了特定的功能,并向外界提供可以调用的Web服务接口,当服务使用者远程调用该Web服务接口,Web服务调用相应的程序,处理请求并返回操作结果,其架构如图2所示。服务端提供的信息服务主要由企业信息服务与地理信息服务组成。其中企业信息服务主要包括对企业信息的查询,处理,分类等。而地理信息服务主要实现地图相关数据的处理,解析用户的空间查询请求,并根据用户的请求调用相关函数执行,完成后将结果返回给客户端,如地图的沿线查询等。
图2 基于Web Service的服务端架构
2.3 基于Google Map轻量级的企业信息标注系统架构
基于Google Map轻量级的企业信息标注系统以SOA为基础,采用AJAX客户端和Web Service服务器端结构设计,其系统架构如图3所示。客户端主要包括客户端浏览器、Google Map地图服务与AJAX引擎,其中Google Map地图服务是调用相关方法把企业数据与Google Map混搭,进行信息的图上展示及图上信息操作等;Ajax引擎的主要是控制客户端与服务端进行交互。服务端采用Web Service进行搭建。主要包括UDDI(服务注册中心)和应用服务组成,UDDI提供了Web Service的注册和查找的机制,通过它可以注册服务和查找定位所需服务。UDDI本身也是Web服务,使用者可通过JSON消息来访问UDDI。应用服务由若干企业信息服务、地理信息服务及标准Web服务构成,提供实际的业务功能,如执行算法、流程控制或从数据库中获取数据等。数据库则主要由企业信息数据库及空间数据库组成,企业信息数据库包含企业的相关信息,空间数据库则包含行政区划信息与企业的空间位置、周边区域的空间信息。
图3 轻量级的企业信息标注系统架构
南宁市企业信息标注系统旨在改变中小企业营销预算短缺、营销手段单一、效果不明显,营销竞争激烈、目标客户难把握等问题,以中小企业的发展需要及政府的决策需要为出发点,把企业信息通过地图表达,直观的地图展示可以让对企业感兴趣的客户更加轻松地了解企业,并且也可为政府的决策提供支撑。该系统在ASP.Net(C#)的环境下采用AJAX客户端—Web Service服务端的方式进行搭建,以SqlServer2005作为系统数据库,利用Google Maps API进行二次开发,实现了南宁市企业信息的地图标注,信息展示及空间查询等。
3.1 系统功能分析
南宁市企业信息标注系统结合南宁市管辖的6县6城区范围内的中小企业的管理推广以及政府的决策需要进行设计,涵盖了与企业相关的各方面信息。其主要功能包括:地图基本操作、地理信息关键字查询、空间分析查询、企业信息管理等,具体的系统功能设计如图4所示。
图4 南宁市企业信息标注系统功能
3.2 系统功能实现
(1)AJAX引擎实现方法
AJAX引擎主要实现响应客户的请求及调用和接收Web Service的响应等功能。在系统开发时,由于AJAX在不同浏览器中的实现存在着一些差异,如IE6支持的是ActiveXObject类型,而在FireFox中则直接支持XMLHttpRequest类型,因此为了更好地保证兼容性,在南宁市企业信息标注系统中采用轻量级的JS框架jQuery实现信息的异步发送。AJAX引擎主要调用jQuery.AJAX ([options])方法加载数据。其实现的代码如下:
$.AJAX({
type:"POST",
contentType:"application/JSON",
url:"WS_hubo.asmx/InsertmarkerInfo",
data:"{"+strData+"}",
dataType:'JSON',
success:function(){
var JSON=eval('('+result.d+')');
}
});
其中type表示Http请求的方式(POST或GET);contentType指定发送信息至服务器时内容编码类型,因在系统中使用JSON数据包进行交互,所以指定编码类型为JSON;url指所需调用的Web Service接口地址;data为发送到Web Service接口的数据包括参数名与参数值;dataType为预期调用Web Service接口返回结果的数据类型,在这里指定为JSON;success函数表示Web Service响应成功后的回调函数,其结果由Web Service返回,并根据dataType参数将需返回的结果转换为相应的格式。针对发送的数据采用eval将传回的JSON格式的数据转化为JSON对象进行解析。
(2)基于Web Service服务端的调用与响应
.NET平台中内建了对Web Service的支持,包括Web Service的构建与使用。与其他的开发平台不同,使用.NET平台无需使用其他的工具或SDK就可完成Web Service的开发,.NET中对服务器端的请求处理和对客户端的发送以及消息的接受都提供了支持。创建Web Service时,只需建立一个.asmx文件,设置好相应的属性,就可进行编写。如需对外部暴露某个函数时,必须在函数上面添加函数的描述信息,如[WebMethod (Description=”函数的描述信息”)]。如该函数未声明,将无法被外部用户调用。当Web Service被调用时,其响应的过程如下:
①根据Web Service接口名与前台发送的调用接口所需的参数名和参数类型,判断Web Service下是否存在与调用要求一致的接口,若存在,则执行下一步;若否,则返回503错误。
②根据该接口中的参数名与参数值,调用相关的函数完成该接口功能。
③当处理完毕后,将返回的数据按封装成一个JSON格式的字段串,并返回给AJAX引擎。在AJAX引擎中转换为JSON对象后按层次规则读取。
(3)企业信息标注功能实现
企业标注功能主要在Google Map地图放置一个可拖动的标记,把该标记拖动到企业的图上位置,点击标记可弹出企业信息输入窗口,完成信息输入后把企业信息以及所处位置的空间信息存入数据库中。其具体实现为:使用Marker类根据指定属性创建一个可拖动的标记,注意在创建标记时,设置该标记draggable属性值为true,否则该标记无法拖动,为标记绑定点击事件。调用标记的setMap方法在指定地图渲染标记。为指定的地图对象添加点击事件,当触发其点击事件时,根据mouseEvent参数获取该点击位置的经纬度,并根据该经纬度在调用标记的setPosition方法,把标记放置在该点击位置。使用InfoWindow类创建一个创建带有指定属性的信息窗口,当标记的点击事件触发时,调用信息窗口的setContent方法把设置好的企业信息添加窗口的Html代码载入,调用open方法在标记的右上方打开信息窗口。当提交企业信息时,把企业的信息拼接成JSON格式的字符串,使用AJAX引擎把需要提交的信息及条件参数发送指定相应的Web Service地址,在Web Service中使用泛型接收JSON格式的企业信息,再调用相应的函数添加入数据库中。其实现的效果如图5所示。
图5 企业信息标注实现效果
(4)企业空间查询功能实现
为了更好地对企业信息进行分析,南宁市企业信息标注系统中设计实现了企业信息的沿线查询、自定义区域查询、圆查询及矩形查询4种查询方式以满足用户对企业信息的查询需求。这4种空间查询方式可让用户在地图上绘制相应的图形,并根据一定的算法查询出绘制区域内的企业信息。
以沿线查询为例。沿线查询是指根据用户在地图上绘制的折线,查询出位于该折线上或周围一定范围内的信息标注点。其实现算法是:假设在Google Map中存在一条线段P1P2,根据P1、P2两点的经纬度线构成直角三角形△OP1P2,如图6所示。设P1P2上有一点P,从点P沿Y轴负方向作射线,与OP1边交于点A。若AP平行于OP2,根据三角形相似定理中的等比公式,可推出AP/OP2=AP1/OP1=PP1/P2P1,即可确定点P在P1P2上。当点P在P1P2上时,可推出AP× OP1—OP2×AP1=0,反之,该关系不等于0。因此可利用该关系的差值及给定的查询距离值模拟缓冲区分析,设关系差值为L,L=AP×OP1—OP2×AP1,D为查询范围的距离值,若L在(-D,D)范围内,则得出点P在P1P2缓冲区内;若超出该范围,则点P不在P1P2缓冲区内。四种企业信息的空间查询方式的实现效果如图7所示。
图6 沿线查询示意图
图7 企业信息空间查询实现效果
本文从实现技术、系统架构及应用实例三方面出发,分析了AJAX与Web Service及Google Map API三者在轻量级企业信息标注系统中的应用,并且针对地图服务空间分析查询较弱的问题,设计并实现了基于Google Map的空间查询算法,提出基于Google Map的轻量级企业信息标注系统的解决方案,为中小企业的发展以及政府的决策提供了参考。实践表明,搭建的南宁市企业信息标注系统具有响应速度快、客户端功能丰富、用户体验良好以及应用门槛较低等优势,为轻量级在线地图服务系统的开发提供了借鉴。
[1] 李恺毅,李景文,黄俊华等.基于Web Services的空间信息服务平台设计方法[J].桂林理工大学学报,2010,30 (4):585~589.
[2] 徐卓揆.基于HTML5_Ajax和Web Service的WebGIS研究[J].测绘科学,2012,37(1):145~147.
[3] 罗英伟,黄宝琦,汪小林等.轻量级WebGIS系统PKGML [J].计算机辅助设计与图形学学报,2005,17(4):852~861.
[4] 李细杰,邬群勇,蔡旺华.基于JSON的轻量级WebGIS模型与应用[J].测绘工程,2011,20(2):53~56.
[5] 叶波,王芳,朱明等.Google地图服务与Web服务信息交互方法[J].桂林理工大学学报,2011,31(3):381~385.
[6] 刘钊,朱小冬,王红亮等.基于SVG的轻量级WebGIS的空间分析研究[J].测绘科学,2009,34(4):129~131.
[7] 江平,刘民士.射线法判断点与包含简单曲线多边形关系的完善[J].测绘科学,2009,34(5):220~222.
[8] 陈瑞卿,周健,虞烈.一种判断点与多边形关系的快速算法[J].西安交通大学学报,2007,47(1):59~63.
Design Procedure of Lightweight Enterprise Information Labeling System Based on Google M ap
Fu Yu1,2,Li Jingwen1,2,Wang Hui1,2,Chen Junren1,2
(1.College of Geomatics and Geoinformation,Guilin University of Technology,Guilin 541004,China;2.Guangxi Key Laboratory of Spatial Information and Geomatics,Guilin 541004,China)
This paper based on the developing demand ofmedium-sized and small enterprises,uses the structure of service-oriented,utilizes natural combination of Ajax technology and Google Map API,aswell asweb service technology,it designs lightweight enterprise information labeling system which is based on Google Map,discusses the design and implementmethod of lightweight system based on Google Map,meanwhile it realizes enterprise information labeling system of Nan ning and spatial query of enterprise information based on Google Map.
enterprise;AJAX;googlemap;web service
傅毓1,2∗,李景文1,2,王辉1,2,陈俊任1,2
1672-8262(2013)03-25-05
P208.2
A
2012—12—01
傅毓(1986—),男,硕士研究生,从事地图服务二次开发方面的研究。
广西自然科学基金重点项目(桂科自2011GXNSFD018003);广西空间信息与测绘重点实验室基金项目(桂科能1103108-03)。