如何在网页中允许地理定位

Posted

技术标签:

【中文标题】如何在网页中允许地理定位【英文标题】:how to allow geolocation in web page 【发布时间】:2014-10-08 13:13:21 【问题描述】:

我一直在尝试运行此代码来获取纬度和经度。我的 IE 浏览器显示不支持地理定位服务的消息,即使我在 chrome 中设置位置设置以允许所有站点进行跟踪,Chrome 仍显示“此页面已被阻止跟踪您的位置”。 请帮忙。

<html>
<head></head>
<body>
    <input type="button" id="btnSearch" value="Search" onclick="doSomething();"/>
    <script>
    function doSomething()
        if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(handle_geolocation_query);
            function handle_geolocation_query(position) 
                alert('Lat: ' + position.coords.latitude + ' ' + 'Lon: ' + position.coords.latitude);
            
         else 
            alert("I'm sorry, but geolocation services are not supported by your browser.");
        
    
    </script>
</body>
</html>

【问题讨论】:

如何加载页面? HTTP?本地文件? 对什么?第一个问题不是是/否,接下来的两个问题是互斥的,不能都是“是”。 对不起.....我将它保存为.html文件并双击它....所以本地 这可能是问题所在。对用户信息的大量访问被锁定在本地文件中。 我得到了一半...我需要在 localhost 中运行它.....怎么做? 【参考方案1】:

将 handle_geolocation_query() 的范围更改为外部,它应该可以工作。更改后它可以在我的 IE 和 firefox 上运行。

<html>
<head></head>
<body>
    <input type="button" id="btnSearch" value="Search" onclick="doSomething();"/>
    <script>
    function doSomething()
        if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(handle_geolocation_query);
         else 
            alert("I'm sorry, but geolocation services are not supported by your browser.");
        
    

    function handle_geolocation_query(position) 
        alert('Lat: ' + position.coords.latitude + ' ' + 'Lon: ' + position.coords.latitude);
    
    </script>
</body>
</html>    

【讨论】:

【参考方案2】:

就我而言,问题是我从文件系统 (file:///...) 打开了 HTML 文件。浏览器通常会尝试阻止从本地文件访问个人信息(包括位置),因此您必须通过网络服务器(即使它是本地的)提供文件。

如果您安装了 Python,则为位于文件系统中的静态网站提供服务的一种简单方法是 SimpleHTTPServer。只需使用命令提示符导航到该文件夹​​,然后说python -m SimpleHTTPServer,然后您就可以在localhost:8000 上查看该文件。

【讨论】:

【参考方案3】:

尝试删除包装它的 if 语句,看看会发生什么。 navigator.geolocation.getCurrentPosition 是调用浏览器访问地理服务权限的函数,所以我认为的问题是它没有达到那个点并且直接跳到 else 语句。

Here is a source 应该可以帮助您清理地理代码。

【讨论】:

您的代码对我来说在 Chrome 中完美运行,这告诉我它可能是您的系统在本地出现的问题,请查看此帖子以获取修复。 ***.com/questions/5423938/…

以上是关于如何在网页中允许地理定位的主要内容,如果未能解决你的问题,请参考以下文章

如果用户未回答 JavaScript 地理定位小狗,如何继续执行代码?

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

PyQt 5.9 中的 OpenLayers 地理定位

如何隐藏或集成地理定位权限弹出到按钮(Javascript + HTML)

地理定位 video web存储

如何使用HTML5地理位置定位功能