我对HTML5地理位置功能有疑问。我使用下面的代码来获取位置数据。我使用“enableHighAccuracy:false”选项来使用基于Cell的GPS功能。准确度很低但响应速度太快。但有些人总是在手机上使用内置GPS,因此这段代码对他们不起作用。如果我将accurency选项更改为“enableHighAccuracy:true”,则它适用于他们。但这次,代码仅使用内置GPS。不是基于CELL的GPS。
问题 - >我怎么能这样做:首先,尝试通过超时(例如5000ms)从内置GPS获取位置如果此时无法获得位置只需查找基于单元的位置超时(例如10000ms)如果位置无法进入此位置时间,返回错误信息。
这是我现在使用的代码。
提前致谢。
function getLocationfromGoogle() {
navigator.geolocation.getCurrentPosition(
function(pos) {
$("#lat_field").val(pos.coords.latitude);
$("#long_field").val(pos.coords.longitude);
var geocoder = new google.maps.Geocoder();
var latLng = new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude);
geocoder.geocode({ 'latLng': latLng}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//console.log(results[0].formatted_address);
$("#adresim").val(results[0].formatted_address);
}
else {
alert('Google convertion is not succesfully done.');
}
});
},function error(msg){
alert('Please enable your GPS position future.');
},{maximumAge:600000, timeout:5000, enableHighAccuracy: false}
);
}
答案 0 :(得分:22)
您还应该知道,从手机操作系统到手机操作系统的实现方式各不相同 - 在Android上运行的功能可能适用于iOS,BlackBerry,WindowsPhone等,也可能不适用。
你几乎就在那里,你只需要:
enableHighAccuracy: true
(您已将其设置为false
)enableHighAccuracy: false
再次尝试。看看这个sample code。
您还应该注意,在少数设备上测试时,即使enableHighAccuracy: true
,它也会返回从WiFi派生的位置。
答案 1 :(得分:6)
此处提到的代码:http://jsfiddle.net/CvSW4/在错误处理期间对我不起作用。
原因是错误函数接受名为“position”的参数,但在名为“error”的函数中使用了一个对象。
function errorCallback_highAccuracy(position) { ... }
function errorCallback_lowAccuracy(position) { ... }
解决这个问题的方法是切换错误方法以接受输入值作为名为'error'的参数而不是'position',因为错误回调不接受位置而是抛出错误对象。
function errorCallback_highAccuracy(error) { ... }
function errorCallback_lowAccuracy(error) { ... }
我在这里提到它,因为我无法发布结果示例页面,而且,这是我链接的位置,以查找上面提到的代码示例。