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 に答える