背景

    环境:Win10    IIS

    在ArcGIS API for JavaScript移动端开发,需要定位的时候,出现一个问题“GeolocationPositionErrorcode: 2 message: "Network location provider at 'https://www.googleapis.com/' : No response received."”。

     GeolocationPositionErrorcode: 2 message:_GeolocationPositionE

 

 

   这是电脑端chrome中测试的提示,在火狐是好的,火狐会提示:

          GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_02

 

 

     点击允许获取位置,程序就能正常运行,IE、Edge也可以。但是chrome根本不提示这个。 在手机端测试几款常用的浏览器,包括安卓和IOS,也都不行。

问题原因

    对计算机的知识有些欠缺,所以直接搜索问题出在哪里,然后就在谷歌开发的网站找到答案:

    GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_03

 

 

    意思很明显,就是要把HTTP迁移到HTTPS。

    另外在火狐官网也看到Geolocation API的相关描述,里面有个可以测试的地方:

     ①这是Chrome里的测试

    GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_04

 

 

     ②这是Firefox里的测试结果:

    GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_05

 

 

     另外,Edge也是可以的,IE没反应。

    问题解决

    ①大部分资料是建议到用Let's Encrypt、阿里云、腾讯云等部署免费 HTTPS。

    ② 但是我是在ArcGIS官网的一篇文章(在 Web 服务器上启用 HTTPS)解决的这个问题。

     经过测试,PC端Chrome出现别的错误,可能需要用Let's Encrypt那些部署HTTPS。但是我用第二种方法,手机端的各个浏览器都可以获取位置了。以下为safari:

    GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_06

 

 

    可能遇到的问题:

              ①为什么我的iis7.0的功能视图中没有"服务器证书":在服务器站点名称下的功能视图里有服务器证书,在网站名称下的功能视图里没有。服务器站点名称是在iis里应用程序池和网站的父级。
                   

 

               GeolocationPositionErrorcode: 2 message:_GeolocationPositionE_07

 

 

 

 

    参考网站

    在IIS中启用SSL

    IIS 使用 Let’s Encrypt 证书部署 HTTPS 站点

    windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书

    在IIS服务器上安装SSL证书

    从 HTTP 到 HTTPS - IIS 部署免费 HTTPS