Chrome 5中的HTML 5地理位置提示

刚刚开始进入HTML 5并testing出地理位置…喜欢它到目前为止。 我碰到了一点速度凹凸,虽然…当我试图得到我的地理位置,铬自动阻止页面得到我的位置。 这不会发生在其他网站,如下面的网站:

http://html5demos.com/geo

我正在使用的脚本:

<script type="text/javascript" JavaScript" SRC="geo.js"></script> <script type="text/javascript" JavaScript" SRC="Utility.js"></script> <script type="text/javascript" JavaScript" SRC="jquery.js"></script> <script type="text/javascript" JavaScript" SRC="modernizr.js"></script> function get_location() { if (geo_position_js.init()) { geo_position_js.getCurrentPosition(show_map, handle_error); } } function show_map(position) { var latitude = position.coords.latitude; var longitude = position.coords.longitude; alert("lat:" + latitude + " long:" + longitude); } function handle_error(err) { alert(err.code); if (err.code == 1) { // user said no! } } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(show_map, handle_error); } else { error('not supported'); } 

我从我的机器上的本地目录中testing了这个,所以没有像“http://whatever.com/mytestpage.html”这样的“域名”。 这是为什么我没有得到提示? 如果是这样,是否有可能强迫browswer请求获取用户的地理位置的权限,并可能在我的情况?

在Chrome中使用地理位置的方式存在一些安全限制file:/// URI file:/// ,但不幸的是,它似乎没有logging任何错误来表明这一点。 它将从本地Web服务器工作。 如果您安装了python,请尝试在您的testing文件所在的目录中打开一个命令提示符并发出以下命令:

 python -m SimpleHTTPServer 

它应该启动一个端口8000上的Web服务器(可能是别的,但它会告诉你在控制台上它监听的是什么端口),然后浏览到http:// localhost:8000 / mytestpage.html

如果你没有python,那么在Ruby中有相当的模块,或者Visual Web Developer Express带有一个内置的本地web服务器。

以上都没有帮助我。

经过一些调查,我发现截至M50(2016年4月) – Chrome现在需要一个安全的来源(如HTTPS)进行地理定位 。

不安全起源的弃用function

主机“本地主机”是特殊的B / C其“可能安全”。 如果您正在部署到您的开发机器,您可能在开发过程中看不到错误。

正如在robertc的回答中已经提到的那样,Chrome会阻止某些function,如使用本地文件的地理位置。 设置自己的Web服务器的一个更简单的替代方法就是使用参数 --allow-file-access-from-files 启动Chrome 。 那么你可以使用地理位置,只要你没有在你的设置中closures它。

如果您托pipe在服务器后面,仍然面临问题:请尝试将localhost更改为127.0.0.1,例如http:// localhost:8080 / to http://127.0.0.1:8080/

我面临的问题是,我在eclipse IDE(eclipse luna)中使用apache tomcat提供服务。

为了我的理智检查,我使用了Remy Sharp的演示: https : //github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html

并得到错误后,尽pipe托pipe在服务器上的代码(只在Firefox上工作,并在铬和Safari浏览器上失败)的错误function微调后:

“用户拒绝地理位置”

我做了以下更改以获取更详细的错误消息:

 function error(msg) { var s = document.querySelector('#status'); msg = msg.message ? msg.message : msg; //add this line s.innerHTML = typeof msg == 'string' ? msg : "failed"; s.className = 'fail'; // console.log(arguments); } 

http://10.0.2.2:8080上的virtualbox IE10后面的Internet Explorer上失败:

“目前的位置无法确定”

要获得简单的解决方法,只需将HTML文件复制到某个云共享(如Dropbox),然后在浏览器中使用共享链接即可。 简单。

最简单的方法是点击地址栏左侧的区域,并在那里更改位置设置。 它允许设置位置选项,即使是file:///

在这里输入图像描述

当我尝试使用Gelocation API时,我也遇到了这个问题。 然后,我通过Visual Studio启动IIS express,然后访问该页面,并且在所有浏览器中都没有任何问题。