navigator.geolocation 不返回 iOS 6 的有效时间戳
Posted
技术标签:
【中文标题】navigator.geolocation 不返回 iOS 6 的有效时间戳【英文标题】:navigator.geolocation does not return valid timestamp with iOS 6 【发布时间】:2012-11-14 22:36:46 【问题描述】:我在浏览器应用中有一些非常基本的 GeoLocation 代码,它必须报告纬度/经度和时间戳的准确 GPS 值。
这一直适用于 android 设备和 iPhone 至 ios 5.1.1。
现在我们的一个用途已经升级到 iOS 6.0.1,返回的时间戳现在都无效了。
javascript代码的基本形式:
navigator.geolocation.getCurrentPosition(foundLocation, noLocation, enableHighAccuracy: accuracyVal, timeout: timeoutVal, maximumAge: maxageVal
function foundLocation(position)
var lat = position.coords.latitude;
var long = position.coords.longitude;
var gps_ts = position.timestamp;
Android 设备继续返回与实际时间匹配的 gps_ts UNIX 时间戳,但在 iOS 6 中,我们得到的时间戳转换为 1958 年到 1969 年间的奇数日期时间。它们似乎是按时间顺序测量的,因为这些值随着连续使用而增加,但它们不再是当前时间的 UNIX 时间戳。
我们将不胜感激。我看到还有其他支持 iOS 6 地理定位的报告(请参阅https://discussions.apple.com/thread/4313850?start=0&tstart=0),但没有专门关于 javascript 使用和时间戳功能。
【问题讨论】:
【参考方案1】:我今天一直在尝试这个。据我所知,iOS 中的timestamp
的“分辨率”基本上是其他浏览器的 1000 倍(微秒而不是毫秒)。我写了一个这样的辅助函数来解决它:
function getGeoTimestampDate(timestamp)
if (timestamp > 14000000000000) timestamp = Math.floor(timestamp / 1000);
return new Date(timestamp);
我只能在几台设备上进行测试(一台原始 iPad 和一台 iPhone 4,都在 iOS 6.0.1 上)所以如果有人能确认它是否适用于其他设备,我将不胜感激。
【讨论】:
以上是关于navigator.geolocation 不返回 iOS 6 的有效时间戳的主要内容,如果未能解决你的问题,请参考以下文章
navigator.geolocation.getCurrentPosition 在 firefox 和 chrome 之间返回不同?
navigator.geolocation.getCurrentPosition() 方法在某些设备中返回位置请求超时 react-native
使用 navigator.geolocation.getCurrentPosition();同步的
navigator.geolocation.getcurrentPosition() 未获取纬度和经度值