0

今日、Windows Phone 7 デバイスから GPS 座標を収集するためにかなりの時間を探していましたが、ここには実際のテスト デバイスがないため、実際の G​​PS Data の代わりに返してもらいたいダミー データを設定しようとしました。 ..しかし、うまくいきません。このコードは、私がここで見つけた例の一部です。ただし、後でアクセスできるクラスに入れようとしました。

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();
    }
}

これは、データにアクセスしようとする別のクラスですが、常に lat1Rad および long1Rad として NaN を取得します...助けてもらえますか?

その例を、エミュレーター (固定 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);

私は基本的に、現在の GPS 位置を返すクラスをプログラムしたいだけです。

4

3 に答える 3

1

なぜ frmo を派生させているのGeoCoordinateWatcherですか? それは間違いです、IMO。独自のクラスのメンバーを使用しているときと、委任されたインスタンスを使用しているときが不明確になります。現時点では、委任されたウォッチャーで座標を設定していますが、インスタンスから直接座標を要求しています。GetGPS

IGeoPositionWatcher<GeoCoordinate>独自の「固定」位置ウォッチャーを使用して実装し、実行時にそれを使用するか、実際のを使用するかを決定することをお勧めしますGeoCoordinateWatcherIGeoPositionWatcher<GeoCoordinate>明らかにこれは、クライアント コードが直接ではなく依存する必要があることを意味しますGeoCoordinateWatcher。これは、単体テストの目的にも役立ちます。

于 2010-12-08T15:45:22.343 に答える
1

サンプルコードはどこからのものですか?

MSDN のサンプルを使用してみましたか?

または、 http://phone7.wordpress.com/2010/08/02/no-device-no-gps-no-matter-with-code/から入手できる素晴らしいシミュレーターがあります。

于 2010-12-08T15:47:42.560 に答える
0

もちろん、ジョンの答えは非常に適切です-合理的なインターフェイスの抽象化を行っていないと思いますが、それを取得した場合でも、シミュレートされたデータについては、Kevin Wolf の GPS Simulator for Windpws Phone を調べましたか?

于 2010-12-08T15:48:27.813 に答える