Domanda

Ho cercato un po 'di tempo oggi per raccogliere le coordinate GPS da un dispositivo Windows Phone 7 - tuttavia dal momento che non ho un dispositivo di controllo vero e proprio qui ho cercato di impostare alcuni dati fittizi che voglio essere tornato al posto del reale I dati GPS ... che, comunque ist non funziona troppo bene: Questo codice ist parzialmente un esempio in modo che ho trovato qui. Tuttavia ho cercato di metterlo in una classe che io possa accedere in seguito.

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

Questa è la mia altra classe in cui provo ad accedere ai dati - tuttavia ho sempre NaN come lat1Rad e long1Rad ... si può please help me?

Voglio che l'esempio per essere funzionale sull'emulatore (con un GPS fisso Coordinate) e su un dispositivo telefonico. 7 - dove effettivamente afferra il valore

GetGPS location1= new GetGPS();

//GeoCoordinate myPosition = location1.getPosition();

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

Io fondamentalmente voglio solo programmare una classe che mi restituisce la CORRENTE posizione GPS.

È stato utile?

Soluzione

Dove si trova il codice di esempio da?

Hai provato a usare la campione su MSDN ?

In alternativa, c'è un simulatore greate disponibile da http://phone7.wordpress.com/2010/08/02/no-device-no-gps-no-matter-with-code/

Altri suggerimenti

Perché sei derivante frmo GeoCoordinateWatcher? Questo è un errore, IMO. Lo rende chiaro quando si sta utilizzando i membri della propria classe e quando si sta utilizzando l'istanza delegato. Al momento si sta impostando le coordinate sul watcher delegato, ma poi chiedendo per le coordinate dall'istanza GetGPS direttamente.

Vi suggerisco di implementare IGeoPositionWatcher<GeoCoordinate> con la propria posizione watcher "fisso" - e poi decidere in fase di esecuzione se utilizzare quello o il vero GeoCoordinateWatcher. Ovviamente questo significa che il codice del client dovrebbe dipendere solo IGeoPositionWatcher<GeoCoordinate> invece di GeoCoordinateWatcher direttamente. Ciò dovrebbe contribuire anche a scopo di test unità.

Naturalmente la risposta di Jon è molto a proposito - Penso che non hai fatto astrazione interfaccia ragionevole, ma anche quando si ottiene che, per i dati simulati Avete dato un'occhiata a di Kevin Lupo GPS Simulator per Windpws telefono ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top