Windows phone 7 在windows phone 7应用程序中获取纬度和经度时出现问题

Windows phone 7 在windows phone 7应用程序中获取纬度和经度时出现问题,windows-phone-7,Windows Phone 7,我正在使用GeoCoordinateWatcher类获取windows phone 7的纬度和经度,但当我在windows phone上调试此应用程序时, 在我的StatusChanged事件中,我获得了GeoPositionStatus.NoData。请告诉我以下代码有什么问题 GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); watcher.MovementThreshold

我正在使用GeoCoordinateWatcher类获取windows phone 7的纬度和经度,但当我在windows phone上调试此应用程序时, 在我的StatusChanged事件中,我获得了
GeoPositionStatus.NoData
。请告诉我以下代码有什么问题

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 10.0f;
// wire up event handlers
watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_statusChanged);
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);

void watcher_statusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
    switch (e.Status)
    {
        case GeoPositionStatus.Disabled:
            if (watcher.Permission == GeoPositionPermission.Denied)
            {
                // the user has disabled LocServ on their device.
                statusTextBlock.Text = "You have disabled Location Service.";
            }
            else
            {
                statusTextBlock.Text = "Location Service is not functioning on this device.";
            }
        break;

        case GeoPositionStatus.Initializing:
            // The location service is initializing.
            statusTextBlock.Text = "Location Service is retrieving data...";
        break;

        case GeoPositionStatus.NoData:
            // The Location Service is working, but it cannot get location data
            // due to poor signal fidelity (most likely)
            statusTextBlock.Text = "Location data is not available.";
        break;

        case GeoPositionStatus.Ready:
            // The location service is working and is receiving location data.
            statusTextBlock.Text = "Location data is available.";
        break;
    }
}

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs <GeoCoordinate> e)
{
    // update the textblock readouts.
    latitudeTextblock.Text = e.Position.Location.Latitude.ToString("0.0000000000");
    longitudeTextblock.Text = e.Position.Location.Longitude.ToString("0.0000000000");
    speedreadout.Text = e.Position.Location.Speed.ToString("0.0") + " meters per second";
    coursereadout.Text = e.Position.Location.Course.ToString("0.0") + " degrees";
    altitudereadout.Text = e.Position.Location.Altitude.ToString("0.0") + " meters above sea level";
}
GeoCoordinateWatcher=新的GeoCoordinateWatcher(地理定位精度高);
watcher.MovementThreshold=10.0f;
//连接事件处理程序
watcher.StatusChanged+=新事件处理程序(watcher\u StatusChanged);
watcher.PositionChanged+=新事件处理程序(watcher\u PositionChanged);
void watcher_status已更改(对象发送器、地理位置StatusChangedEventArgs e)
{
开关(如状态)
{
案例地理位置状态。已禁用:
if(watcher.Permission==geoppositionpermission.Denied)
{
//用户已在其设备上禁用LocServ。
statusTextBlock.Text=“您已禁用位置服务。”;
}
其他的
{
statusTextBlock.Text=“位置服务在此设备上不起作用。”;
}
打破
案例地理位置状态。正在初始化:
//位置服务正在初始化。
statusTextBlock.Text=“位置服务正在检索数据…”;
打破
案例地理位置status.NoData:
//位置服务正在工作,但无法获取位置数据
//由于信号保真度差(最有可能)
statusTextBlock.Text=“位置数据不可用。”;
打破
案例地理位置状态。准备就绪:
//位置服务正在工作并正在接收位置数据。
statusTextBlock.Text=“位置数据可用。”;
打破
}
}
void watcher_位置已更改(对象发送器,地理位置更改Deventargs e)
{
//更新文本块读数。
latitudeTextblock.Text=e.Position.Location.Latitude.ToString(“0.0000000000”);
longitudeTextblock.Text=e.Position.Location.Longitude.ToString(“0.0000000000”);
SpeedReader.Text=e.Position.Location.Speed.ToString(“0.0”)+“米/秒”;
coursereadout.Text=e.Position.Location.Course.ToString(“0.0”)+“度”;
AltitudeAdout.Text=e.Position.Location.Altitude.ToString(“0.0”)+“海平面以上米”;
}

您应该启动监视程序

watcher.Start(...);

我看到你发现定位服务被关闭了。但需要记住的是,他们将检查您的程序是否能够处理这种情况。当您启动位置服务时,您可以查看它是否已禁用

watcher.Start(); bool IsLocationServicesTurnedOff=(watcher.Permission==GeoPositionPermission.Denied)


还要记住,在Mango中,您的程序可以被挂起,位置服务被禁用,并且您的程序可以被重新激活。换句话说,在您的程序生命周期中,可以随时禁用位置服务

谢谢laszlokiss88,但是我已经启动了GeoCoordinateWatcher类对象,不管怎样我的问题已经解决了实际上我的手机GPS没有启用。启用后,现在我从手机上获取纬度和经度。