我的jquery脚本在Chrome中运行良好,但在最新版本的Safari和iOS6上的所有浏览器中都存在问题。提示用户在Safari中使用geolcation的权限,但其余代码将不会执行。
我知道iOS6在Geolocation方面存在问题,但不确定这是不是错了。任何建议都深表赞赏。
jQuery(window).ready(function(){
$('#circleG')
.hide() // hide spinner initially
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).hide();
});
jQuery(window).load(initiate_geolocation);
});
function initiate_geolocation() {
navigator.geolocation.getCurrentPosition(handle_geolocation_query,handle_errors);
}
function handle_errors(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
break;
case error.POSITION_UNAVAILABLE:
break;
case error.TIMEOUT:
break;
default:
break;
}
}
function handle_geolocation_query(position){
$.getJSON(BASE+'/yelphome', { latitude: position.coords.latitude, longitude: position.coords.longitude }, function(data) {
var template = Handlebars.compile($('#template').html());
$('div.adam').append( template(data.businesses));
});
}
答案 0 :(得分:0)
W3C标准如下。我在许多项目中成功使用过它。
if(navigator.geolocation != undefined) {
navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude,
lng = position.coords.longitute;
// DO STUFF HERE
});
};
navigator.geolocation.getCurrentPosition
功能实际上是提示用户提供其位置并随后返回其位置信息。
我已经在Android,iOS,Windows和OSX上成功测试了这个。
我认为你会发现这样的事情会很好:
$(window).load(function(){
if(navigator.geolocation != undefined) {
navigator.geolocation.getCurrentPosition(function(position){
var lat = position.coords.latitude,
lng = position.coords.longitute;
// DO STUFF HERE
}, function(error){
switch(error.code)
{
case error.PERMISSION_DENIED:
break;
case error.POSITION_UNAVAILABLE:
break;
case error.TIMEOUT:
break;
default:
break;
}
});
};
})