Safari 中的 html5 地理定位错误

Posted

技术标签:

【中文标题】Safari 中的 html5 地理定位错误【英文标题】:html 5 geo location bug in Safari 【发布时间】:2014-02-09 21:06:44 【问题描述】:

我使用 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】:

您没有告诉我们您的开发人员工具栏输出是什么,所以我不太确定您的错误在哪里。 不过..

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

编辑: 顺便说一句,getCurrentPosition 还有第三个参数,它是一个对象,其中包含一个告诉定位服务何时超时的属性。如果您希望能够管理超时而不是让设备处理它,这会很有用。

【讨论】:

Thaks Mattias 我会听从您的建议。我使用的唯一库是 jquery。这将是一个必须离线工作的网站,所以我提到了使用另一个工具。

以上是关于Safari 中的 html5 地理定位错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 html5 进行地理定位

HTML 5 地理定位在 Safari 中不起作用

HTML5 Geolocation(地理定位)简介

HTML5 Geolocation(地理定位)简介

#yyds干活盘点# 4.1 HTML5 Geolocation(定理定位)

错误处理不适用于 Chrome 中的 HTML5 地理位置