在移动终端,LBS大行其道,能同时给用户和商家带来极大的便利,但前提是能够取到用户当前的地理位置。本文总结的是取到用户所处位置的方法,为后续的实现提供参考。
移动终端最大的优势在于便携、个人属性强。也就是说不管走到哪,终端都会跟着我们,这就意味着我们可以获取最适合自己的信息,比如说你当前的周边有哪些商家在发布优惠券,或者你要出去玩,明天杭州的天气是什么样的~如果给你北京的,大多数情况下对你来说简直是种负担。上述的这些基于地理位置的信息服务就指LBS。生活中比比皆是,比哪车载导航、foursquare、街旁、点评、口碑…。
1 定位的精度
基于地理位置的客户端有很多,当然,根据它要实现的功能不同,对于定位的精度也不同。有些定位到城市级别,如口碑wap版本;有些需要定位到街道级别,如一些公交点便民搜索;而有些要求更为精确,甚至到楼层级别,如一些商场给用户的购物导航,告诉用户你当前楼层,以后跟离你想要的商家的距离。
2 定位的实现方式
那如何来确定使用者的定位呢?这种定位的技术目前来说不是很多,主要分为以下几种:
基于设备本身具备的定位功能,如有GPS功能的设备;
基于远端服务器提供的定位功能,如常用的IP定位;
直接问用户,你在哪儿?
2.1 GPS
GPS(全球定位系统)是人们最耳熟能详的定位方式。它由美国研制,并由94年全面建成,它基于太空中的24颗轨迹卫星提供导航功能。现在很多移动设备内置了GPS信号接收器,可以直接读取卫星的数据来计算所处的位置,定位的精度在2米到100米之间。缺点是GPS定位往往需要的时间比较长,通信质量不好的情况下,可能需要数分钟才能定位出用户的位置。
2.2 A-GPS
这是一种辅助定位技术,一般是用于手机设备上。由于GPS定位是比较慢的,因此运营商们提供了一些辅助手段来帮助定位。主要是帮助手机找到比较好的卫星信号,或者直接在手机还没获取到信息信号之前给用户一个精度较低的位置信息。
2.3 基站定位
由于电信运营商手上掌握着每一个基站的位置,因此只要手机能够连上附近至少三个基站,运营商就能计算出手机用户的位置。附近能够连接上的基站越多,定位就越准确。
2.4 WIFI热点定位
即使关了GPS,只通过WIFI访问Google map,仍然可以定位所在的位置。这是因为Google采用了WIFI定位系统。它通过检测设备上可以探测到的无线路由列表来进行定位。当然,前提是要有个全的WIFI数据库。Google在采集街景的同时,也沿途搜刮了无线路由(包括公共热点和私人无线路由器)。
2.5 IP定位
服务端可以通过读取用户请求里的IP信息来进行简单的定位。其局限性如下:
服务端并不知道用户是以哪种方式接入网络的。如果是2G或者是3G接入,获取的IP有可能是运营商的WAP网关地址;如果是固网接入,也有可能是运营商提供的一个IP段里的动态IP。
如果用户使用了具有代理功能的浏览器,如UC、opera mini,服务端接收到的直接请求实际上是来自己于代理,可能跟用户真实位置相跟半个中国。
因此,IP定位通常只是作为一种参考,用于猜测用户可能来自于哪一个国家或者哪一个城市。
2.6 其它定位方式
由运营商提供用户的位置。运营商可以在用户到服务端的请求上附加一些额外的用户信息,其中就可以包含位置信息。但是,运营商会凭啥要这么干?
由用户请求中的accept-language来判断,这种方式只能猜测用户可能来自于哪个国家
2.7 直接询问用户
当以上方式都无法获取时,最后一招是直接问用户来自于哪里,这是精度很高的一种方式。只不过要考虑,在手机终端上用户的输入成本,要尽量可能地降低到最小。
列出热门地标,供用户选择
提供基于城市名称、首字母、区号等的搜索。
提供基于地标的模糊搜索。
取到这些以后,就可以把用户的这些位置信息保存起来,如果发现用户经常在这一带活动,就可以根据该位置信息进行个性化的服务推送,如wap外卖的处理方式。
2.8 W3C Geolocation API
W3C制定了一个标准的方式通过JS来获取地理位置信息,即Geolocation API。很多浏览器已经提供了对它的支持,其中包括3.5以后版本的firefox,3.0以后版本的ios mobile safari,2.0以后版本的android,具体如下图,感谢技术同学的分享。
文章来源:飞灵交互志 转载请注明出处链接。