【问题标题】:Getting GPS Coordinates Windows Phone 7获取 GPS 坐标 Windows Phone 7
【发布时间】:2010-12-08 15:34:44
【问题描述】:

我今天一直在寻找从 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 坐标)和 phone 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);

我基本上只是想编写一个返回当前 GPS 位置的类。

【问题讨论】:

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


    【解决方案1】:

    您的示例代码来自哪里?

    您是否尝试过使用sample on MSDN

    另外,http://phone7.wordpress.com/2010/08/02/no-device-no-gps-no-matter-with-code/ 提供了一个很棒的模拟器

    【讨论】:

    • 我看过 MSDN 示例 - 但我无法理解。我试过模拟器并让它工作,但我想要一个静态的 GeoPosition - 或实际的 GPS GeoPosition。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      当然,Jon 的回答非常中肯——我认为你没有进行合理的接口抽象,但即使你得到了,对于模​​拟数据,你有没有看过Kevin Wolf's GPS Simulator for Windpws Phone

      【讨论】:

      • 我从一些 MvP 中找到了一个示例,如下所示: GeoCoordinateWatcher location1 = new GeoCoordinateWatcher(); var myPosition = location1.Position;双纬度 = 54.086369f;双经度 = 12.124754f; if (!myPosition.Location.IsUnknown) { 纬度 = myPosition.Location.Latitude;经度 = myPosition.Location.Longitude; } 可能有效,或者?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多