3

我的 jquery 脚本在 Chrome 中运行良好,但在最新版本的 Safari 和 iOS6 上的所有浏览器中都有问题。系统会提示用户允许在 Safari 中使用地理定位,但其余代码将不会执行。

我知道 iOS6 在地理定位方面存在问题,但不确定这是否是问题所在。任何建议都深表感谢。

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));
 });
}
4

1 回答 1

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;  
            }  
        });
    };
})  
于 2013-01-29T15:32:47.857 回答