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 模拟器中运行它,并尝试启用和禁用模拟位置。

是什么导致了这个错误,在真正的 GPS 设备和模拟器中使用 Geolocator 成功检索用户位置的正确方式是什么?

4

1 回答 1

0

您的代码在我的本地机器和模拟器上的 Windows 8 Release Preview 上都可以正常工作。

我在模拟器中对它进行了测试,同时打开和关闭了模拟位置。

要检查的一件事...您是否在应用清单的“功能”部分中启用了位置?

此外,您可能想尝试将位置信息写入屏幕...上面的代码只会将 pos 对象传递给控制台,因此即使您通过错误。

这是我所做的:

  1. 从一个新的空白 JavaScript 应用开始。
  2. <p>打开 default.html,并在包含默认内容的标签中添加一个“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 回答