geolocation是html5规范中的新特性,它主要通过GPS和IP地址来猜测客户端的上网位置,输出位置信息。换言之,如果没有GPS设备,它将使用后者来猜测你的位置,所以结果不是绝对精准的。
规范的详细文档可浏览:http://dev.w3.org/geo/api/spec-source.html
当前并不是所有的浏览器都支持geolocation,在目前为止以下浏览器支持该新特性:IE8,safari4,chrome,Opera(我没验证)。但如果你的应用需要在非以上浏览中实现类似geolocation的功能,可以使用google location services,可以参考文章http://blog.bcse.info/get-geolocation-via-javascript
为保障使用者安全,使用该API时浏览器会询问用户是否启用该功能。如图:
只有允许API才生效。
通常使用getCurrentPosition来获取使用者当前的位置,如果需要的跟踪使用者的位置调用watchPosition,传闻后者可以为移动设备更节省电力,手上没有移动设备,也并未理解它们之间的分别。
无论使用以上那个,都返回一个Position对象来描述物理位置,它包含调用者的经纬坐标(coords)–经度、纬度、海拨、准确度等等……部分参数是需要具体实现支持的,如果没有将返回默认值null.
下面是geolocation最简单的调用例子:
<script>
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
alert(“latitude = ” + position.coords.latitude+ ”\nlongitude = ” + position.coords.longitude);
});
} else {
error(‘not supported’);
}
</script>
它返回了当前的物理位置,并通过警告窗口显现。该API本身是非常简单,期待更多基于该API的新应用产生。当定位信息准确化后,它将改变我们的生活,同时也给我们带来相对的痛苦。当然,只是相对的。。。
以下是http://html5demos.com/geo上显视壬丰大厦的物理位置

参考资料:
- http://html5demos.com/geo , 相对完整并整合了google map的例子
- http://www.mijia.org/blog/?p=198
- http://dev.w3.org/geo/api/spec-source.html,w3关于geo的规范
- https://developer.mozilla.org/En/Using_geolocation,mozilla上的帮助
- http://blog.bcse.info/get-geolocation-via-javascript-2,整合google gear便于支持非html5浏览器
