Chrome IOS HTML5定位权限被拒绝

10

在尝试使用 HTML5 地理位置 API 在移动 iOS Chrome 上时,我的应用程序会抛出“权限被拒绝”的错误,甚至没有提示共享我的位置。有其他人遇到过这个问题吗?

PS. 这在本地和 Heroku 实例上都发生。

以下是我在文档准备好时运行的代码:

    var displayCloseFoo = function(position) {
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;

    };

    var displayError =  function(error) {
        var errors = {
            1: 'Permission denied',
            2: 'Position unavailable',
            3: 'Request timeout'
        };
        alert("Error: " + errors[error.code]);
    };

    var runGeo =  function(){
        if (navigator.geolocation) {
            var timeoutVal = 10 * 1000 * 1000;
            navigator.geolocation.getCurrentPosition(
                    displayCloseFoo,
                    displayError,
                    { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
            );
        }
        else {
            alert("Geolocation is not supported by this browser");
        }
    };
    runGeo();

谢谢


你的iOS模拟器正在运行吗?已知会导致主机的位置服务停止工作。 - user1071136
不是的。这是一个移动Web应用程序,不是本地应用程序。 - chad
3个回答

5

您需要明确允许移动版Chrome在iOS上使用位置服务。 在iOS 6中,您可以通过转到“设置 -> 隐私 -> 位置服务”并将Chrome切换为“打开”来实现此目的。


0

在Chrome本地环境下,地理定位无法工作...不确定为什么从你的Heroku实例中无法工作

看看这个Fiddle...它似乎在这里运行得很好... http://jsfiddle.net/mattnull/YaCRe/


这在iOS的移动版Chrome上不起作用。我刚刚在手机上打开了这个演示,并且它给我展示的是与上面代码相同的行为。 - chad
奇怪..我也做了同样的事情,在我的手机上可以工作...你有开启位置服务吗?这可能需要启用。 - mattnull
我注意到一旦你拒绝了它一次,然后重新加载,它就会继续显示权限被拒绝... 我认为这是因为它在Chrome中添加了一个异常来拒绝进一步访问。 - mattnull
有趣的是,我很确定我从未否认过它,但我会尝试查看Chrome的异常情况。 - chad

0

在安装Chrome浏览器后,当它打开时,会要求您共享您的位置。如果您拒绝共享,则无法获取位置信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接