在Windows 8 Metro Javascript应用程序中使用Geolocator时“管道正在关闭”错误

时间:2012-07-25 05:28:42

标签: javascript geolocation windows-8 microsoft-metro

使用以下代码,我收到以下错误:

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在真正支持GPS的设备和模拟器中成功检索用户位置的正确方式是什么?

1 个答案:

答案 0 :(得分:0)

在Windows 8 Release Preview上,我的本地计算机和模拟器中的代码都可以正常使用。

我在模拟器中测试了它,模拟位置都打开和关闭。

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

此外,您可能想尝试将位置信息写入屏幕...上面的代码只是将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;
    }); 
    
  4. 我正在测试的机器是没有GPS的笔记本电脑,因此底层API将使用WiFi或IP地址信息进行地理定位。如果GPS可用,它应该透明地用于您的应用程序的位置数据。