获得GPS协调Windows Phone 7

时间:2010-12-08 15:34:44

标签: c# windows-phone-7 geolocation gps windows-phone

我今天一直在寻找从Windows Phone 7设备收集GPS坐标的时间 - 但是由于我没有实际的测试设备,我尝试设置一些我想要返回的虚拟数据而不是真实的GPS数据......然而,这不是很好: 这段代码部分是我在这里找到的一个例子。但是我试着把它放到一个我可以稍后访问的类中。

public class GetGPS : GeoCoordinateWatcher
{
    GeoCoordinateWatcher watcher;

    public GetGPS()
    {
        watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
        watcher.MovementThreshold = 20;

        watcher.PositionChanged += this.watcher_PositionChanged;
        watcher.StatusChanged += this.watcher_StatusChanged;
        watcher.Start();
    }

    private void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
    {
        switch (e.Status)
        {
            case GeoPositionStatus.Ready:
                //plingpling
                break;
            case GeoPositionStatus.Disabled:
                // location is unsupported on this device
                break;
            case GeoPositionStatus.NoData:
                watcher.Position.Location.Latitude = 54.086369f;
                watcher.Position.Location.Longitude = 12.124754f;
                break;
        }
    }

    private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
        var epl = e.Position.Location;

        // Access the position information thusly:
        epl.Latitude.ToString("0.000");
        epl.Longitude.ToString("0.000");
        epl.Altitude.ToString();
        epl.HorizontalAccuracy.ToString();
        epl.VerticalAccuracy.ToString();
        epl.Course.ToString();
        epl.Speed.ToString();
        e.Position.Timestamp.LocalDateTime.ToString();
    }
}

这是我尝试访问数据的另一个类 - 但是我总是将NaN作为lat1Rad和long1Rad ...你能帮助我吗?

我希望该示例在模拟器(具有固定的GPS坐标)和手机7设备上正常运行 - 它实际上可以获取该值。

GetGPS location1= new GetGPS();

//GeoCoordinate myPosition = location1.getPosition();

//Radianten berechnen
double lat1Rad = GradZuRad(location1.Position.Location.Latitude);
double long1Rad = GradZuRad(location1.Position.Location.Longitude);

我基本上只想编写一个让我返回CURRENT GPS位置的课程。

3 个答案:

答案 0 :(得分:1)

为什么要导出frmo GeoCoordinateWatcher?这是一个错误,IMO。它使您不清楚何时使用自己的类的成员以及何时使用委派的实例。目前,您在委派的观察者上设置坐标,然后直接询问来自GetGPS实例的坐标。

我建议你用自己的“固定”位置观察器实现IGeoPositionWatcher<GeoCoordinate> - 然后在执行时决定是使用它还是真正的GeoCoordinateWatcher。显然,这意味着您的客户端代码应该只依赖于IGeoPositionWatcher<GeoCoordinate>而不是GeoCoordinateWatcher。这也有助于单元测试目的。

答案 1 :(得分:1)

您的示例代码来自哪里?

您是否尝试过使用sample on MSDN

或者,可以从http://phone7.wordpress.com/2010/08/02/no-device-no-gps-no-matter-with-code/

获得一个greate模拟器

答案 2 :(得分:0)

当然,Jon的回答非常合适 - 我认为你没有做过合理的界面抽象,但即使你得到了这个,对于模拟数据,你有没有看过Kevin Wolf's GPS Simulator for Windpws Phone