3

ブラウザー アプリには、緯度/経度とタイムスタンプの両方の正確な GPS 値を報告する必要がある、かなり基本的な GeoLocation コードがあります。

これは、Android デバイスと iOS 5.1.1 までの iPhone で機能しています。

私たちの用途の 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 に答える