W3C Geolocation API在Chrome中不起作用

问题描述

| 以下代码在Firefox中有效,但在Google Chrome中不可用:
<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <script type=\"text/javascript\">
            var successCallback = function(data) {
                console.log(\'latitude: \' + data.coords.latitude + \' longitude: \' + data.coords.longitude);
            };

            var failureCallback = function() {
                console.log(\'location failure :(\');
            };

            var logLocation = function() {

                //determine if the handset has client side geo location capabilities
                if(navigator.geolocation){
                   navigator.geolocation.getCurrentPosition(successCallback,failureCallback);
                }
                else{
                   alert(\"Functionality not available\");
                }
            };

            logLocation();
            setTimeout(logLocation,5000);
        </script>
    </head>
    <body>
        <p>Testing</p>
    <body>
</html>
这是怎么回事?我以为Google Chrome应该支持W3C Geolocation API。     

解决方法

        非常适合我-在Win 7上同时使用Chrome 11和Firefox 4.0.1 确保您没有在Chrome中禁用位置跟踪:
Options > Under the Hood > Content Settings > Location
由于安全性限制,不允许使用“ 2”方案加载的资源访问位置。请参阅Chrome中的HTML 5地理位置提示。     ,        如果您的域不安全(例如HTTP而不是HTTPS),则将不允许您访问Chrome中的位置。这是因为Chrome版本50(太平洋标准时间2016年4月20日下午12点)。 有关详细信息,请参阅https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only。     ,        在2017年:   注意:从Chrome 50开始,Geolocation API仅适用于安全上下文,例如HTTPS。如果您的站点托管在非安全来源(例如HTTP)上,则获取用户位置的请求将不再起作用。 从Chrome 50的不安全来源中删除了Geolocation API     ,        对我来说效果很好-在Win 7上使用Chrome 11和Firefox 4.0.1 确保您没有在Chrome中禁用位置跟踪:选项>高级>内容设置>位置,请允许  在检查许可后,请运行它 运行后要么是
sucesscallback
,要么是
errorcallback
function sucesscallback (position)
{

var userLatLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);

   
    var myOptions = {
        zoom: 15,center: userLatLng,mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var mapObject = new google.maps.Map(document.getElementById(\"googleMap\"),myOptions);

    var marker = new google.maps.Marker({
        map: mapObject,position: userLatLng

    });
   
}




    function failureCallback(error) {
    
        switch (error.code) {
            case 1:
                alert(\"User denied the request for Geolocation.\");
                break;
            case 2:
                alert(\"Location information is unavailable. Please ensure Location is On\");
                break;
            case 3:
                alert(\"timeout\");
                break;
            case 4:
                alert(\"An unknown error occurred.\");
                break;
        }
    }
<div id=\'googleMap\' style=\'width:300px;height:300px;\'>
</div>
,        通过Geolocation API,您可以在用户同意的情况下发现用户的位置。您可以将此功能用于引导用户到目的地以及对用户创建的内容进行地理标记等操作。例如,标记在哪里拍摄照片。 地理位置API还可让您查看用户所在的位置,并在他们四处移动时在其上保留选项卡,始终在用户的同意下(且仅在打开页面时)。这创建了许多有趣的用例,例如与后端系统集成以在用户附近的情况下准备收货单。 使用Geolocation API时,您需要了解很多事情。本指南将引导您完成常见的用例和解决方案。 https://developers.google.com/web/fundamentals/native-hardware/user-location/?hl=zh-CN     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...