我正在Google Chrome(v13)中使用Geolocation API進行實驗。我已經制作了簡單的HTML頁面去交手的基本知識:Chrome中的地理位置API:Position的座標屬性undefined
<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>
運行這個頁面,一切都顯得精細 - 如預期顯示緯度,經度和準確性。然而,在尋找開發人員工具控制檯,我提出了一個錯誤:
Uncaught TypeError: Cannot read property 'coords' of undefined (geo.html:14)
調試它看起來像位置的對象是不確定的,在它的第一個電話 - 行處理緯度。然而,任何其他方面都沒有錯誤。事實上,郵政對象在緯度線之後就存在了。
事情我已經試圖阻止這種錯誤包括:
- 移動getCurrentPosition調用回調函數後聲明
- 分配geoLoc.coords到XY變量作爲doStuff的第一行( )函數(這樣做後,這是造成該錯誤的代碼的一部分)
我是否正確調用位置對象? Chrome的怪癖是?這與確定職位所花費的時間有關嗎?
謝謝, 克里斯。
你從'文件上運行:// URL'?如果是這樣,請嘗試從'http://' –