2

次のコードを使用すると、次のエラーが表示されます。

the pipe is being closed

the wait operation timed out

コード:

var loc = new Windows.Devices.Geolocation.Geolocator();
loc.getGeopositionAsync().done(function (pos) {
    console.log(pos);
});

これを Windows 8 シミュレーター内で実行しており、シミュレートされた場所を有効または無効にして両方を試みました。

このエラーの原因は何ですか? また、Geolocator を使用して、実際の G​​PS 対応デバイスとシミュレーターの両方でユーザーの位置を正常に取得する正しい方法は何ですか?

4

1 に答える 1

0

あなたのコードは、Windows 8 Release Preview のローカル マシンとシミュレーターの両方で問題なく動作します。

シミュレートされた場所をオンとオフの両方でシミュレーターでテストしました。

1 つ確認していただきたいのは、アプリ マニフェストの Capabilities セクションで Location が有効になっているかどうかです。

また、位置情報を画面に書き込んでみることもできます...上記のコードは pos オブジェクトをコンソールに渡すだけなので、エラー。

これが私がしたことです:

  1. 新しい空の JavaScript アプリから始めます。
  2. default.html を開き<p>、デフォルト コンテンツを含むタグに「geo」の ID を追加します。
  3. 次のコードを app.onactivated ハンドラーに追加してテストします (右中括弧の直前にコードを追加しました:

    var loc = new Windows.Devices.Geolocation.Geolocator();
    loc.getGeopositionAsync().done(function (pos) {
        console.log(pos);
        var geo = document.getElementById("geo");
        geo.innerText = pos.coordinate.latitude + ", " + pos.coordinate.longitude;
    }); 
    

私がテストしているマシンは GPS のないラップトップであるため、基礎となる API は地理位置情報に WiFi または IP アドレス情報を使用します。GPS が利用可能な場合は、アプリに対して透過的に位置データに使用する必要があります。

于 2012-08-03T17:04:23.807 に答える