既是安安

蝴蝶飞不过沧海,谁忍心责怪?

{既是安安}

最短的IE判断Demo

代码:

JavaScript代码:
			
<input type="button" id="getPos" value="获取我的位置" />
<div id="info"></div>
<div id="map" class="hideMap"><p style="text-align:center;padding-top:50px;">正在为您准备地图,请稍候</p></div>
			
			

JAVASCRIPT代码:
			
.warn{
	color:red;
	font-weight:bold;
}
.tip{
	color:#3D9D0B;
	font-weight:bold;
}
#info{
	margin:30px auto;
	line-height:30px;
	width:600px;
	text-align:center;
}
#getPos{
	display:block;
	margin:0 auto;
	width:120px;
	background:#ccc;
	border:3px solid #666;
	padding:10px;
	cursor:pointer;
	font-weight:bold;
}
#map{
	width:420px;
	height:270px;
	margin:0 auto;
	border:3px solid #ccc;
}
.hideMap{
	display:none;
}
			
			

JAVASCRIPT代码:
			
<script type="text/javascript">
var t = 0;
var dom = {
	btn : document.getElementById('getPos'),
	info : document.getElementById('info'),
	map : document.getElementById('map')
};
var gmap = {
	map : null,
	marker : null
}
dom.btn.onclick = function(){
    if (navigator.geolocation) {
		dom.info.innerHTML = "请等待查询结果返回";
		dom.info.className = "warn";
        navigator.geolocation.getCurrentPosition(getPositionSuccess,getPositionError,{timeout:5000});
    }else {
		 dom.info.innerHTML = "抱歉,您所使用的浏览器不支持 Geolocation 接口";
		 dom.info.className = "warn";
    }
}

function getPositionSuccess(position){
	var lat = position.coords.latitude;
	var lng = position.coords.longitude;
    dom.info.innerHTML = "您所在的位置: 经度" + lat + ",纬度" + lng;
	if(typeof position.address === "undefined"){
		dom.info.innerHTML += "<br /><span class='tip'>您的浏览器目前仅提供坐标查询,使用 Firefox 3.5+ 可获得更多信息</span>";
	}else{
		dom.info.innerHTML += "<br /><span class='tip'>" + position.address.country + " , " + position.address.region + " , " + position.address.city+"</span>";
	}
	dom.info.className = "";
	dom.map.className = "";
	navigator.geolocation.watchPosition(refreshPosition);
	
	//Load Google Map
	var latlng = new google.maps.LatLng(lat, lng);
	var myOptions = {
		zoom : 16,
		center : latlng,
		mapTypeId : google.maps.MapTypeId.ROADMAP
	};
	gmap.map = new google.maps.Map(document.getElementById("map"), myOptions);
	
	//Add marker
	gmap.marker = new google.maps.Marker({
		position: latlng,
		map: gmap.map
	});
}

function getPositionError(error){
	switch(error.code){
		case error.TIMEOUT :
			dom.info.innerHTML = "连接超时,请重试";
			break;
		case error.PERMISSION_DENIED :
			dom.info.innerHTML = "您拒绝了使用位置共享服务,查询已取消";
			break;
		case error.POSITION_UNAVAILABLE : 
			dom.info.innerHTML = "亲爱的火星网友,非常抱歉<br />我们暂时无法为您所在的星球提供位置服务";
			break;
	}
}

function refreshPosition(position){
	//监听设备移动,更新地图
	if (t !== 0) {
		var lat = position.coords.latitude;
		var lng = position.coords.longitude;
		var latlng = new google.maps.LatLng(lat, lng);
		gmap.map.setCenter(latlng);
		dom.info.innerHTML = '您所在的位置: 经度<span class="tip">' + lat + '</span>,纬度<span class="tip">' + lng + '</span>';
		gmap.marker.setOptions({
			position: new google.maps.LatLng(lat, lng)
		});
	}else{
		//丢弃第一次监听
		t++;
		return false;
	}
}
</script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
			
				

效果:

正在为您准备地图,请稍候