Windows phone 7 地理坐标记录器isn';在迁移到WP8后不工作

Windows phone 7 地理坐标记录器isn';在迁移到WP8后不工作,windows-phone-7,geolocation,windows-phone-8,Windows Phone 7,Geolocation,Windows Phone 8,我为WindowsPhone7.1开发了一个导航应用程序。那里运转良好。更新到8.0后,我的地理坐标跟踪程序不再工作。我知道我可以用地理定位器代替,但我拒绝这样做,因为时间不够 对于我的应用程序,我读取我的观察者的当前位置,并将其存储在一个包含位置信息的对象实例中。保存对象实例时,经度和纬度为0.0。即使我在模拟器中更改位置,仍然是0.0。同样的问题也出现在我的其他页面上,这些页面使用GeoCoordinateWatcher。它不起作用。正如我已经说过的,在WP 7.1-7.8上,它工作得非常好

我为WindowsPhone7.1开发了一个导航应用程序。那里运转良好。更新到8.0后,我的地理坐标跟踪程序不再工作。我知道我可以用地理定位器代替,但我拒绝这样做,因为时间不够

对于我的应用程序,我读取我的观察者的当前位置,并将其存储在一个包含位置信息的对象实例中。保存对象实例时,经度和纬度为0.0。即使我在模拟器中更改位置,仍然是0.0。同样的问题也出现在我的其他页面上,这些页面使用GeoCoordinateWatcher。它不起作用。正如我已经说过的,在WP 7.1-7.8上,它工作得非常好

    public Map()
    {
        InitializeComponent();

        watcher = new GeoCoordinateWatcher();
        watcher.MovementThreshold = 20;
        watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
        watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
    }

    void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
        if (e.Position.Location.IsUnknown)
        {
            MessageBox.Show("Please wait while your prosition is determined.");
            return;
        }

        geo.Latitude = e.Position.Location.Latitude;
        geo.Longitude = e.Position.Location.Longitude;
    }
publicmap()
{
初始化组件();
watcher=新的地理坐标跟踪程序();
watcher.MovementThreshold=20;
watcher.StatusChanged+=新事件处理程序(watcher\u StatusChanged);
watcher.PositionChanged+=新事件处理程序(watcher\u PositionChanged);
}
void watcher_位置已更改(对象发送器,地理位置更改Deventargs e)
{
如果(如位置位置未知)
{
Show(“请稍候,您的发言已确定。”);
返回;
}
地理纬度=e.Position.Location.Latitude;
geo.Longitude=e.Position.Location.Longitude;
}
尝试以下代码:

    GeoCoordinateWatcher watch;
public GeoCoordinate loc = null;
public MainPage()
{
    InitializeComponent();
    if (watch == null)
    {
        watch = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
        {
            MovementThreshold=10
        };
        watch.Start();
        watch.PositionChanged += watch_PositionChanged;
    }
}
void watch_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    //throw new NotImplementedException();
    Dispatcher.BeginInvoke(()=>LocUpdate(e));
}

void LocUpdate(GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    try
    {
        location = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude);


    }
    catch
    {
        MessageBox.Show("Error");
    }
}
geocordinatewatcher-watcher;
公共地理坐标loc=null;
公共主页()
{
初始化组件();
if(watch==null)
{
watch=新的地理坐标记录器(地理位置精度高)
{
MovementThreshold=10
};
watch.Start();
watch.PositionChanged+=watch\u PositionChanged;
}
}
void watch_position changed(对象发送器,地理位置更改数据源)
{
//抛出新的NotImplementedException();
Dispatcher.BeginInvoke(()=>房间更新(e));
}
无效房间更新(地理位置更改方向角e)
{
尝试
{
位置=新地理坐标(e.Position.location.lation,e.Position.location.Longitude);
}
抓住
{
MessageBox.Show(“错误”);
}
}