LBS应用中地理定位机制研究

2013-07-03 08:15:28王海波王兆华
计算机与现代化 2013年2期
关键词:浏览器客户端服务器

王海波,王兆华

(中国传媒大学计算机与网络中心,北京 100024)

0 引言

LBS(Location Based Service,基于位置的服务)[1]是指通过移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息。随着Foursquare、Facebook等国外网站的兴起,LBS服务成为互联网以及移动互联网中非常重要的一种应用。在W3C推出的HTML5规范中,制定了地理位置定位相关的API[2],极大地推动了LBS应用的发展。

各主流浏览器在实现HTML5地理定位的相关规范时,虽然对外提供了统一的接口,但内部采用了不同的实现方法和机制。本文通过对浏览器实现HTML5地理定位机制的分析,指出了目前浏览器地理定位机制的缺陷,并提出了对这一问题进行改进的方法。

1 背景

1.1 地理定位数据

为了定位某一个设备,可以用一组数字来表示它在地球上的位置。在地理坐标系中,坐标由经度、纬度和海拔高度组成[3]。

地球上的水平参考线是纬线,两条纬线的间距大约是69英里。地球上的垂直参考线是经线,在南极点和北极点汇合。在度量陆地上某一点的高度时,通常的基准是地球的平均海平面。

地理位置信息并不总是准确无误的,它依赖于进行地理定位时采用的方法。

1.2 地理定位的基本方法

(1)GPS。

GPS卫星连续不断地发射信息,支持GPS的设备或接收器可以对这些信息进行解析。接收器通过测定GPS卫星阵列中可见卫星发射信号的时间来计算自己的位置。

(2)IP地址。

IP地址是指定给任何上网设备的一个唯一编号。多数情况下,IP地址是通过地区性的注册机构按照地区指定给互联网服务提供商的。因此,通过IP地址通常能获得设备所在的国家、地区和城市。

(3)GSM/CDMA Cell ID。

Cell ID是特定的蜂窝网络中标识每一部移动设备的唯一编号。利用三角测量技术,可以确定移动设备的纬度和经度,从而实现地理定位。

(4)Wi-Fi和蓝牙的MAC地址。

MAC地址是设备的物理地址,通常由网络接口卡制造商指定。这一地址原则上是固定不变并且是全球唯一的标识符。

1.3 HTML5规范中的地理定位API

在W3C制定的Geolocaiton API中,规定了如何使用脚本访问主机设备的地理位置信息。其中,最重要的就是Geolocation对象,它通过getCurrentPositon方法获得地理定位信息。获得信息成功后,地理定位信息保存在Coordinates对象中,它的主要属性信息如表1所示。

表1 地理定位信息

2 浏览器地理定位机制研究

目前主流的浏览器基本实现了W3C组织制定的Geolocaiton API相关的规范。本文采用如图1所示的方法来剖析浏览器如何获得地理定位信息。

图1 浏览器地理定位机制研究方法

笔者安装一个代理服务器软件,并设置浏览器经过这一代理服务器的转发来访问网络,从而获得浏览器在获取地理定位信息时中间产生的数据流。本文使用Fiddler这一代理服务器软件。

2.1 Internet Explorer浏览器

IE 向 inference.location.live.net这一地理定位服务器发出请求,并从请求的结果中获得客户端的地理位置信息,如图2所示。

图2 IE浏览器的地理定位机制

为了防止信息在传输中被窃取,IE使用HTTPS协议与地理位置服务器进行交互,并使用post方法来进行数据的请求。请求的信息中包括时间戳、应用ID、跟踪ID、客户端所在位置周围的Wi-Fi网络的名称等信息。这些信息使用XML格式进行编码,其主要的结构如图3所示。

图3 IE post地理定位请求信息结构

发出的实际请求如下:

IE 发出请求后,将从 inference.location.live.net地理定位服务器得到XML格式的结果数据。数据包括经纬度信息、高度信息等。结果数据的主要结构如图4所示。

图4 IE post地理定位请求结果信息结构

浏览器获得的实际请求结果如下:

2.2 Firefox、Chrome以及 Opera浏览器

Firefox等浏览器向 maps.googleapis.com 这一地理定位服务器发出请求,并从请求的结果中获得客户端的地理位置信息,如图5所示。

图5 Firefox等浏览器地理定位机制

与IE一样,Firefox等浏览器使用HTTPS协议与地理位置服务器进行交互。Firefox等浏览器使用get方法来进行数据的请求。在发出的请求中,包括了客户端使用的浏览器类型以及所在位置周围的Wi-Fi网络的名称。

表2 HTTP请求的头信息

发出请求后,将从 maps.googleapis.com 地理定位服务器得到Json格式的定位结果。

3 浏览器地理定位机制的缺陷及其改进

从前面的剖析可以看到,每一种浏览器在获得客户端的地理定位时,只能向固定的地理定位服务器发出请求,而不允许用户对使用哪一地理定位服务器进行选择。地理定位服务器由于本身收集地理数据的能力不同,准确度并不相同。目前浏览器地理定位机制使得用户失去了选择更好的地理定位服务器的可能性。

本文在 JavaScript框架 geo-location-javascript的基础上,实现了可以允许用户对地理定位服务器进行选择的功能,如图6所示。

图6 支持用户选择的地理定位方式

为了使得浏览器能够对不同的地理定位服务器进行访问,采用了JSONP这一跨域的解决方法。例如,WorldIP是一个共享的地理信息库,它可以根据请求者的IP返回请求者的经度、纬度、所在国家等信息。本文实现 getCurrentPositionFromServer这一函数,可以选择从哪一地理定位服务器获取地理定位数据:

其中,参数server用来对地理定位服务器进行设置。如果使用WorldIP这一地理定位服务器,则把请求发送到api.wipmania.com,否则使用浏览器自身的地理定位机制完成信息的发送。

当用“WordIP”作为参数调用函数后,得到如图7所示的结果。

图7 来自地理定位服务器WordIP的地理数据

当用“Google”作为参数调用函数后,得到如图8所示的结果:

图8 来自地理定位服务器Googleapi的地理数据

4 结束语

在基于位置的服务(LBS)类型的应用中,地理定位是其中不可缺少的功能。在目前的主流浏览器中内置了地理定位功能的实现。本文回顾地理定位的基本方法,剖析浏览器在实现地理定位功能时的主要实现方式,即使用一定的参数信息向地理定位服务器发出post请求或get请求并获得数据的方式。同时,指出目前浏览器地理定位机制中不能选择地理定位服务器的缺陷,并在geo-location-javascript框架的基础上实现可由用户自主选择地理定位服务器的功能。这一功能使得用户可以根据地理定位的准确度来选择地理定位服务器,增强地理定位的实用性。

[1] Wikipedia.地理位置服务[EB/OL].http://zh.wikipedia.org/wiki/LBS,2012-05-12.

[2] W3C.Geolocation API Specification[EB/OL].http://dev.w3.org/geo/api/spec-source.html,2012-05-10.

[3] Peter Lubbers,Brian Albers,Frank Salim.HTML5高级程序设计[M].李杰,柳靖,刘淼译.北京:人民邮电出版社,2012.

[4] [美]Anthony T Holdener III,[阿根廷]Mario Andrés Pagella.深入HTML5应用开发[M].秦绪文,李松峰译.北京:人民邮电出版社,2012.

[5] Fiddler.Introducing Fiddler[EB/OL].http://www.fiddler2.com/fiddler2,2012-09-20.

[6] 刘华星,杨庚.HTML5—下一代 Web开发标准研究[J].计算机技术与发展,2011,21(8):54-58,62.

[7] 徐卓揆.基于 HTML5、Ajax和 Web Service的 WebGIS研究[J].测绘科学,2012,37(1):145-147.

[8] 徐莎,杨帆,徐昌庆.基于HTML5的WebGIS的研究与应用[J].信息技术,2012(4):149-151.

[9] 易晓飞.HTML5 Geolocation API研究与应用[J].计算机光盘软件与应用,2012(6):153-154.

[10] 陶国荣.jQuery权威指南[M].北京:机械工业出版社,2011.

[11] 陆凌牛.HTML 5与CSS 3权威指南[M].北京:机械工业出版社,2011.

[12] 唐俊开.HTML5移动Web开发指南[M].北京:电子工业出版社,2012.

[13] WIPmania.WorldIP-Free Geolocation Database,Service and Tools[EB/OL].http://www.wipmania.com,2012-09-20.

[14] Mozilla.Location-Aware Browsing[EB/OL].http://www.mozilla.org/en-GB/firefox/geolocation/,2012-09-20.

[15] JSON.Introducing JSON[EB/OL].http://www.json.org,2012-09-20.

猜你喜欢
浏览器客户端服务器
通信控制服务器(CCS)维护终端的设计与实现
反浏览器指纹追踪
电子制作(2019年10期)2019-06-17 11:45:14
县级台在突发事件报道中如何应用手机客户端
传媒评论(2018年4期)2018-06-27 08:20:24
孵化垂直频道:新闻客户端新策略
传媒评论(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客户端的设计与实现
电子测试(2018年10期)2018-06-26 05:53:34
得形忘意的服务器标准
知识产权(2016年8期)2016-12-01 07:01:13
计算机网络安全服务器入侵与防御
环球浏览器
环境与生活(2016年6期)2016-02-27 13:46:37
再见,那些年我们嘲笑过的IE浏览器
英语学习(2015年6期)2016-01-30 00:37:23
客户端空间数据缓存策略