Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome中的地理定位API:Position的coord属性未定义_Javascript_Html_Google Chrome_Geolocation - Fatal编程技术网

Javascript Chrome中的地理定位API:Position的coord属性未定义

Javascript Chrome中的地理定位API:Position的coord属性未定义,javascript,html,google-chrome,geolocation,Javascript,Html,Google Chrome,Geolocation,我正在Google Chrome(v13)中试用地理定位API。我制作了一个简单的HTML页面来掌握基本知识: <html> <head> <script type="text/javascript"> navigator.geolocation.getCurrentPosition(doStuff, error, setOptions); function setOptions(geoLoc) {

我正在Google Chrome(v13)中试用地理定位API。我制作了一个简单的HTML页面来掌握基本知识:

<html>
<head>
    <script type="text/javascript">
        navigator.geolocation.getCurrentPosition(doStuff, error, setOptions);

        function setOptions(geoLoc) {
            geoLoc.enableHighAccuracy = true;
            geoLoc.timeout = 30;
            geoLoc.maximumAge = 0;
        }

        function doStuff(geoLoc) {
            document.getElementById("refreshTimestamp").innerHTML = "Last refresh: " + Date.now();  
            document.getElementById("latitude").innerHTML = "Latitude: " + geoLoc.coords.latitude;
            document.getElementById("longitude").innerHTML = "Longitude: " + geoLoc.coords.longitude;
            document.getElementById("altitude").innerHTML = "Altitude: " + geoLoc.coords.altitude;
            document.getElementById("accuracy").innerHTML = "Accuracy: " + geoLoc.coords.accuracy;
            document.getElementById("altitudeAccuracy").innerHTML = "Altitude Accuracy: " + geoLoc.coords.altitudeAccuracy;
            document.getElementById("heading").innerHTML = "Heading: " + geoLoc.coords.heading;
            document.getElementById("speed").innerHTML = "Speed: " + geoLoc.coords.speed;
        }

        function error(geoLoc) {
            document.getElementById("error").innerHTML = "ERROR! Code: " + geoLoc.code + "; Message: " + geoLoc.message;
        }
    </script>
</head>
<body onload="doStuff()">
    <p id="refreshTimestamp"></p>
    <p id="latitude"></p>
    <p id="longitude"></p>
    <p id="altitude"></p>
    <p id="accuracy"></p>
    <p id="altitudeAccuracy"></p>
    <p id="heading"></p>
    <p id="speed"></p>
    <p id="error"></p>
</body>
</html>
调试它看起来像是位置对象在第一次调用时未定义-处理纬度的行。然而,后面的任何一行都没有错误。事实上,在纬度线之后,定位物体就存在了

我试图防止此错误的措施包括:

  • 在回调函数声明之后将getCurrentPosition调用移动到
  • 将geoLoc.coords分配给XY变量,作为doStuff()函数的第一行(执行此操作后,正是这部分代码导致了错误)
  • 我是否错误地调用了Position对象?这是铬合金的怪癖吗?这是否与确定位置所需的时间有关

    谢谢,
    Chris.

    由于以下原因未定义:

    <body onload="doStuff()">
    
    
    
    也许你想要这样的东西:

    function init() {
        navigator.geolocation.getCurrentPosition(doStuff, error, setOptions);
    }
    ...
    <body onload="init()">
    
    函数init(){
    navigator.geolocation.getCurrentPosition(doStuff、error、setOptions);
    }
    ...
    
    您是否从
    文件运行://
    URL?如果是这样,请从
    http://
    function init() {
        navigator.geolocation.getCurrentPosition(doStuff, error, setOptions);
    }
    ...
    <body onload="init()">