使用W3C Geolocation API

一、浏览器支持状况
IE 9.0+
Firefox 3.5+
Safari 5.0+
Chrome 5.0+
Opera 10.6+
iPhone 3.0+
Android 2.0+

二、geolocation.getCurrentPosition()的用法

/* 获取信息成功时的处理函数 */
function successHandler(pos){
	/*
	* pos是这样的一个对象:
	* {
	* 	coords:{
	*		latitude:纬度
	* 		longitude:经度
	* 		altitude:海拔
	* 		accuracy:精度
	* 		altitudeAccuracy:海拔精度
	* 		heading:设备的移动方向(0°≤heading<360°)
	* 		speed:设备的移动速度
	*	},
	* 	timestamp:1298477342721500
	* }
	*/
}

/* 错误处理函数 */
function errorHandler(e){
	switch(e.code){
		case e.PERMISSION_DENIED:
			//用户或浏览器拒绝提供地理位置时
			break;
		case e.POSITION_UNAVAILABLE:
			//获取位置失败时
			break;
		case e.TIMEOUT:
			//获取位置超时
			break;
	}
	// e.message 是出错信息文字。
}

/* 选项 */
var options = {
	//超时时间(毫秒)
	timeout:5000,
	//位置信息的最长缓存时间(毫秒)
	maximumAge:9999,
	//是否启用高精度定位
	enableHighAccuracy:true
}

//判断浏览器是否支持Geolocation API
if(navigator.geolocation){
	//getCurrentPosition接受3个参数,其中后边两个是可选的
	navigator.geolocation.getCurrentPosition(
		successHandler,
		errorHandler,
		options
	);
}

三、geolocation.watchPosition()与clearWatch()的用法
watchPosition(),它一般用在移动设备上,用于连续追踪位置信息,每次位置更新时都会调用一次successHandler。

if(navigator.geolocation){
	//watchPosition()接受3个参数,其中后边两个是可选的,与getCurrentPosition()相同。
	//调用完成后会立即返回一个数字id,与setTimeout()相似。
	var watch_id = navigator.geolocation.watchPosition(
		successHandler,
		errorHandler,
		options
	);

	//解除追踪,watch_id就是watchPosition()所返回的那个数字。
	clearWatch(watch_id);
}

参考:
  1. http://www.w3.org/TR/geolocation-API/
  2. http://diveintohtml5.org/geolocation.html
  3. http://www.jsmix.com/html5/try-out-geolocation.html
More