4.1 认识地理位置
4.1.1 纬度和经度坐标
纬度和经度是一种利用三度空间的球面来定义地球上空间的球面坐标系统,能够标示地球上的任何一个位置。
谈到经纬度,可以追溯到公元前344年,亚历山大渡海南侵,随军的地理学家尼尔库斯沿途搜索材料,准备绘制一幅世界地图。尼尔库斯发现沿着亚历山大东征的路线,由西向东,无论季节变换与日照长短都很相仿。于是第一次在地球上划出了一条纬线,这条线从直布罗陀海峡起,沿着托鲁斯和喜马拉雅山脉一直到太平洋。
经线又称为子午线,定义为地球表面连接南北两极的半圆弧。任何两根经线的长度相同,相交于南北两极,每根经线都有相对应的值,称为经度。纬线定义为地球表面某个点随着地球自转所形成的轨迹,任何一根纬线都是圆形而且两两平行。
经1884年国际会议协商,决定以通过英国伦敦格林尼治天文台(原址)的经线为起始线。这根经线称本初子午线,以本初子午线为起点,向东为东经度(E),向西为西经度(W)。经度共360°,本初子午线为0°经线,东西经度各为180°,东、西经180°经线为同一条经线,统称180°经线。
纬度以赤道为起点,赤道以北为北纬度(N),赤道以南为南纬度(S)。赤道是0°纬度,北纬度的最大值是90°,即北极点;南纬度的最大值为90°,即南极点。
下面通过图4.1来了解地球经纬度。
图4.1 地球经纬度
4.1.2 定位数据
HTML 5通过Geolocation接口获取用户地理位置信息,开发者不需要关心接口是在什么设备上、使用什么底层技术去实现,只需要会简单的调用即可。
一般来说,浏览器可以从设备中获取以下数据来源:
● IP地址。
● GPS(Global Positioning System,全球定位系统)。
● RFID(Radio Frequency IDentification,射频识别),如汽车防盗和无钥匙开门系统的应用、门禁和安全管理系统。
● Wi-Fi地址。
● GSM或CDMA手机的ID。
● 用户自定义的地理位置数据。
每种获取方式的原理不同,所以在精准度上也会产生差异,比如使用笔记本连接Wi-Fi上网获取的经纬度信息与使用手机在GSM上获取的经纬度信息很可能会不完全一致。下面通过比对各项技术的优缺点让读者能够更加全面地了解差异。表4-1列出了定位数据来源的优缺点。
表4-1 定位数据来源优缺点
HTML 5通过Geolocation除了能获取到经纬度坐标外,还能提供位置坐标的精准度。对于某些较高级的硬件设备,浏览器通过Geolocation还能获取到海拔、海拔精准度、行驶方向和速度等,开发者可以通过该接口获取到与原生应用同样丰富的数据形式,开发出更多酷炫的功能,而这一切都可以在浏览器里实现。
4.1.3 构建地理位置应用
地理位置信息涉及用户的隐私,HTML 5 Geolocation设计之初就考虑到了这一点,除非用户明确允许,否则无法获取位置信息。
当用户访问一张使用HTML 5 Geolocation功能开发的页面时,浏览器会出现用户授权提示条。图4.2显示了在Chrome浏览器下用户授权条的样式。
图4.2 Chrome浏览器下Geolocation功能授权提示
不同的浏览器,Geolocation用户授权提示信息形式也不同。Firefox的授权提示如图4.3所示。
图4.3 Firefox浏览器下Geolocation功能授权提示
HTML 5 Geolocation方法在使用时除了会进行用户授权,还允许对过往进行授权的网站进行再修改。用户可以通过修改网站授权保护自己的隐私,比如在咖啡厅使用带有Geolocation的应用查找周边的商户信息,这时通过经纬度信息定位周边商户,可以方便地寻找信息,但当环境发生变化时,如回到家中,此时可以重新将授权私有,以起到保护作用。下面将通过图示来学习如何对已授权的网站取消授权。
以Chrome浏览器为例,首先点击浏览器导航栏右侧圆形类似定位的按钮,如图4.4所示。然后点击弹出提示框的“管理位置设置”链接,此时会重新打开一个窗口,链接地址为“chrome://settings/contentExceptions#location”,新开的页面显示当前浏览器的地理位置信息情况列表,用户可以通过编辑列表选择是否再次对网站进行授权,如图4.5所示。
图4.4 点击Chrome浏览器导航栏右侧定位按钮
图4.5 Chrome浏览器Geolocation授权编辑列表