下面来说在HTML5培训中地理位置的实现方法。地理位置的用途这里就不做解释了,我们直接看代码吧!
function getLocation() {
var options = {
enableHighAccuracy : true,
maximumAge : 1000
}
alert('this is getLocation()');
if (navigator.geolocation) {
//浏览器支持geolocation
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
} else {
//浏览器不支持geolocation
alert('您的浏览器不支持地理位置定位');
}
}
这里HTML5培训中的方法,主要功能是在调用html5的geolocation()前,先判断当前浏览器是否支持html5,这个判断基本在很多PC浏览器都会让程序挂掉(原因就是PC绝大部分浏览器不支持或者拒绝html5定位).
如果浏览器支持,那么程序就会调用geolocation方法了,这是方法里面有2个回调函数:一个是定位成功后的处理操作(一般程序会返回经纬度给你进行后续的定位数据处理),另外一个是定位失败后的处理操作(具体大概就是错误信息,然后就是你的定位失败后的后续操作)
//成功时
function onSuccess(position) {
//返回用户位置
//经度
var longitude = position.coords.longitude;
//纬度
var latitude = position.coords.latitude;
alert('当前地址的经纬度:经度' + longitude + ',纬度' + latitude);
//根据经纬度获取地理位置,不太准确,获取城市区域还是可以的
var map = new BMap.Map("allmap");
var point = new BMap.Point(longitude, latitude);
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs) {
var addComp = rs.addressComponents;
alert(addComp.province + ", " + addComp.city + ", "+ addComp.district + ",
" + addComp.street + ", "+ addComp.streetNumber);
});
postData(longitude, latitude);
}
这里写了一个HTML5培训中成功后的回调函数,第一步获取定位成功返回的经纬度数据,然后结合百度那边提供的接口进行具体位置的转换,最后我还有一个数据提交的方法,这个是我具体业务的后续操作了,你可以根据具体情况进行特殊处理。下面附上百度接口:
<script src = "http://api.map.baidu.com/api?v=1.4"type = "text/javascript"> </script>
//失败时
function onError(error) {
switch (error.code) {
case 1:
alert("位置服务被拒绝");
break;
case 2:
alert("暂时获取不到位置信息");
break;
case 3:
alert("获取信息超时");
break;
case 4:
alert("未知错误");
break;
}
//经度
var longitude = 23.1823780000;
//纬度
var latitude = 113.4233310000;
postData(longitude, latitude);
}
紧接着就是定位失败的回调函数了,这个就简单输出错误信息,然后我也写了一个失败后的后续操作,你可以根据你的需要进行自己的具体操作。