看题目很拗口,tiandi也不知道是否表述的正确。说的具体点就是,html5有个叫Geolocation的东西,这个东西封装在 navigator.geolocation 属性里,具体的作用是能显示浏览器的地址位置。它有一个方法叫做getCurrentPosition,而这个方法有3个参数,即getCurrentPosition(successCallback,errorCallback,positionOptions)。其中第三个参数就是本文标题所说的,Chrome andriod版本好像完全忽略了此参数,当然桌面版的Chrome好像没有这个问题。
positionOptions参数是一个json的形式,有三个值:
enableHighAcuracy — 布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
timeout — 整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback。
maximumAge — 整数/常量: 表示浏览器重新获取位置信息的时间间隔。
这里涉及到的就是enableHighAcuracy,这个参数默认是false,只需要WIFI或者GPRS即可进行模糊定位,当变为true时,表示需要gps进行精确定位。
来看一下下面的代码,代码来自天地团,实际运用当中,tiandi发现Chrome android版下关闭gps功能后,如果用到getCurrentPositionI(successCallback,errorCallback,null)的话,即第3个参数选为默认值,Chrome android会报错PERMISSION_DENIED,而用UCWEB则不会。
var geo = navigator.geolocation;
geo.getCurrentPosition(function (pos) {
var coord = pos.coords;
accuracy = coord.accuracy;
latitude = coord.latitude;
longitude = coord.longitude;
//alert(latitude+"|"+longitude);
searchajax(city,latitude,longitude);
},
function (error) {
switch(error.code)
{
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unknown error occurred.");
break;
}
});
具体可以分别用UCWEB和Chrome android点击导航页上的天地团的附近功能来查看。
姑且这里就当它是一个Chrome android版上的bug吧。


分享了这篇文章,感觉很复杂。
来访咯·