3

我在浏览器应用程序中有一些非常基本的 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 使用和时间戳功能。

4

1 回答 1

3

我今天一直在试验这个。据我所知timestamp,iOS 中的“分辨率”基本上比其他浏览器高 1000 倍(微秒而不是毫秒)。我写了一个这样的辅助函数来解决它:

function getGeoTimestampDate(timestamp) {
    if (timestamp > 14000000000000) { timestamp = Math.floor(timestamp / 1000); }
    return new Date(timestamp);
}

我只能在几台设备上进行测试(原始 iPad 和 iPhone 4,都在 iOS 6.0.1 上),所以如果有人能确认它是否适用于其他设备,我将不胜感激。

于 2012-11-30T16:45:40.877 回答