为啥我的 https 源没有使用导航器地理定位服务的权限?

Posted

技术标签:

【中文标题】为啥我的 https 源没有使用导航器地理定位服务的权限?【英文标题】:Why does my https origin not have permission to use navigator Geolocation service?为什么我的 https 源没有使用导航器地理定位服务的权限? 【发布时间】:2016-09-19 20:53:04 【问题描述】:

尝试使用以下代码获取用户位置时:

var geoLocationProvider = new Microsoft.Maps.GeoLocationProvider(BingMap.map);

geoLocationProvider.getCurrentPosition(

    showAccuracyCircle: false,
    timeout: 6000,
    successCallback: function (object) 

        if (navigator.geolocation) 

            //alert(ret);
            SearchViewModel.ConsoleLog("watchPosition first try from getCurrentPosition successCallback");

            BingMap.SetGPSLoading();
            BingMap.trackingID = navigator.geolocation.watchPosition(BingMap.navigatorSuccess, BingMap.navigatorFail,  maximumAge: 4000, timeout: 10000, enableHighAccuracy: true );
        
    ,
    errorCallback: function (error) 
        if (navigator.geolocation) 
            console.log(error);
            alert(error.internalError.message);
            SearchViewModel.ConsoleLog("watchPosition first try from getCurrentPosition errorCallback");
            BingMap.SetGPSLoading();
            BingMap.trackingID = navigator.geolocation.watchPosition(BingMap.navigatorSuccess, BingMap.navigatorFail,  maximumAge: 4000, timeout: 10000, enableHighAccuracy: true );
        
    

);

我在 ios10 设备上的本机应用程序和 Safari 浏览器中都收到一条错误消息,告诉我我的 Origin (https://domain.com) 没有使用地理位置服务的权限。代码所在的测试服务器有一个自签名证书,所以我不知道这是问题所在还是某个地方存在其他配置问题。

附带说明一下,所有适用的密钥都已添加到我的原生 iOS 应用程序的 info.plist 文件中。

【问题讨论】:

【参考方案1】:

一堆问题:

    您是否向其中添加了 API 密钥? (使用“凭据”参数) 您使用的是开发者/企业版什么许可证?您的许可证可能具有有限的凭据。 您知道 Bing 地图 API 中有不同类型的服务吗?阅读here。查看平台表。不支持 iOS(甚至 android)。

【讨论】:

以上是关于为啥我的 https 源没有使用导航器地理定位服务的权限?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 html5 地理位置无法获得结果?

地理定位移动测试,无需 https 即可进行网络地理定位

为啥我的代码在地理围栏中没有 Dispatcher.RunAsync 时无法工作 [重复]

为啥当我遍历位置时地理定位不起作用

使用导航器地理定位与反应堆

为啥我的笔记本电脑可以使用 HTML Geolocation?