本文介绍一下Html5中的地理位置功能——Geolocation API
目前支持的浏览器有:IE(9.0+) Firefox( 3.5+) Safari(5.0+) Chrome(5.0+) Opera iPhone/iPad( 3.0+ Android(2.0+)
四种定位方式的比较:
实现地理定位的核心方法:getCurrentPosition(success,error,options)
success(position) :获取信息成功的回调函数
error(errorcode):获取信息失败的回调函数
options:获取信息前可以按照你的需求来设置一些参数
下面是一个实例:Google Map显示自己的所在位置:(需要架设web服务器来访问)
注:可以设置VPN代理打开,加载的更快
<script src="../js/jquery-1.8.3.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
// 定义获取第三方数据函数
function getData(url){
var res; // 设置返回值
jQuery.ajax({
url: url,
success: function(_res) {
if(typeof _res == "string"){
_res = $.parseJSON(_res); // 解析为标准的 JSON 格式
}
res = _res;
},
async: false // 设置同步请求
});
return res;
}
var gmap = document.getElementById("map"),
// Google API: 将经纬度转化为具体的地址信息API
coordsMapAddress = 'http://maps.google.com/maps/api/geocode/json?&language=zh-CN&sensor=false&latlng=';
var showMap = function(position) {
// 经纬度
var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
// 地图参数
options = { zoom: 14, center: pos, mapTypeId: google.maps.MapTypeId.ROADMAP },
// 地图
map = new google.maps.Map(gmap, options),
marker = new google.maps.Marker({position: pos, map: map, title: "用户位置"}),
// 通过经纬度信息获取具体的地址
address = getData(coordsMapAddress +
position.coords.latitude + ',' +
position.coords.longitude),
boxString = "<div style='text-align:left;'><b>我在这里: </b><br>" + address.results[0].formatted_address
// 提示内容
+ "<br><b>用户位置:</b>"
+ "<br>纬度:" + position.coords.latitude
+ "<br>经度:" + position.coords.longitude
+ "<br>精确度:" + position.coords.accuracy
+ "</div>",
// 弹出窗口
infoBox = new google.maps.InfoWindow({content: boxString});
// 事件绑定
google.maps.event.addListener(marker, 'click', function() {
// 打开窗口
infoBox.open(map, marker);
});
};
if (navigator.geolocation) {
// 定位开始
gmap.innerHTML = "定位中...";
// 获取定位信息
navigator.geolocation.getCurrentPosition(showMap);
} else {
// 定位失败
gmap.innerHTML = '您的浏览器不支持地理位置 !';
}
</script>


说点什么
欢迎讨论