HTML5地理位置脚本适用于Chrome,但不适用于Safari或任何iOS6浏览器

时间:2012-12-28 18:32:25

标签: jquery html5 ios6 geolocation handlebars.js

我的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));
 });
}

1 个答案:

答案 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;  
            }  
        });
    };
})