Safari中的html 5地理位置错误

时间:2014-02-09 21:06:44

标签: jquery safari geolocation local-storage

我使用html5地理本地化和本地存储创建一个网站,我使用JS,在大多数浏览器中都可以,但我在Safary遇到了一些问题:

这里的解释是:

点击按钮,我想让用户获得GEO位置,将其保存在本地存储中,稍后检索信息并将其发送到电子邮件。 我发出一些警告来验证功能是否正确。

你们中的任何人都可以帮助我理解原因并找到解决方案吗?

感谢您的帮助

这里是代码:

(function ($) {
$(document).ready(function () {

    function localitaionGPS(obj){
        var obj;
        function getLocation(){
            if (navigator.geolocation){
                navigator.geolocation.getCurrentPosition(showPosition); 
            }else{
                alert("Votre navigateur ne suporte pas la Geolocalisation :(");
            }
        }   
        function showPosition(position){
            var maPosition = " position : latitude: " + position.coords.latitude + " longitude: " + position.coords.longitude;
            if(typeof(Storage)!=="undefined"){
                var dateHeure, anne, mois, jour, heure, minute,seconde;
                dateHeure = new Date();
                anne = dateHeure.getFullYear();
                mois = dateHeure.getMonth()+1;
                jour = dateHeure.getDate();
                heure = dateHeure.getHours();
                minutes = dateHeure.getMinutes();
                secondes = dateHeure.getSeconds();
                if (heure < 10){heure = "0"+heure;}
                if (minute < 10){ minute = "0"+minutes;}
                if (secondes < 10){secondes = "0"+secondes;}
                var laDate = jour +"/"+ mois +"/"+ anne +"_"+heure +"h"+ minutes +":" +secondes;
                // to verify the data
                alert (laDate + "_"+ maPosition);   

                localStorage['gpsPosition'+laDate] = laDate+"_espece : "+obj+ "_"+ maPosition;
            }else{
                alert("Votre navigateur ne suporte pas le local storage :(");
            }  
        }
        getLocation();
    }
    var i=0;
    $('.btnGeo').on("click",function () {
        var src = $(this).attr("data-objet");
        localitaionGPS(src);
    })

    //  rest of code to retrieve and errase the local store data.
    $('.getDatos').on("click",function () {
        var datos = []; 
        for(var i=0; i<localStorage.length; i++){
            var strKey = localStorage.key(i);
            var strVal = localStorage.getItem(strKey)+" ; ";
            datos.push(strVal);             
        }
        $('#message').val(datos);
    });
    $('.cleanDatos').on("click",function () {
        localStorage.clear();
    });

});})(jQuery);

1 个答案:

答案 0 :(得分:0)

您没有告诉我们您的开发人员工具栏输出是什么,所以我不确定您的错误位于何处。 但是......

getCurrentPosition有两个回调,第一个是成功回调,第二个是错误回调。例如,如果在浏览器上禁用了地理定位,或者从浏览器/设备后端抛出了某种形式的错误,那么将调用第二个回调。尝试添加第二个回调并在您遇到问题的设备/浏览器上进行测试,以获得有关错误的更多信息。

编辑: 顺便说一下,getCurrentPosition还有第三个参数,它是一个包含一个propery的对象,告诉位置服务何时超时。如果您希望能够管理超时而不是让设备处理超时,这可能非常有用。