Laden...

Geoposition schneidet Nachkommastellen ab..

Erstellt von Myrana vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.620 Views
M
Myrana Themenstarter:in
18 Beiträge seit 2015
vor 8 Jahren
Geoposition schneidet Nachkommastellen ab..

Hallo zusammen.
Ich hoffe ich bin hier jetzt im richtigen Forum.

Ich habe eine Windows Phone 8.1 App geschrieben, welche die Geoinformationen des Smartphones abruft. Das funktioniert auch alles sehr gut, jedoch schneidet es mir immer die Nachkommastellen der Längen und Breitengrade ab.
Also statt Latitude = 120,8298 kommt 120.

Das hier ist der zugehörige Code:


//Geolocater initialisieren
Geolocator myGeoLocator = new Geolocator();
//Koordinaten abrufen und speichern
Geoposition geoposition = await myGeoLocator.GetGeopositionAsync();
//Längengrad auf Display anzeigen
status.Text = geoposition.Coordinate.Point.Position.Longitude.ToString();

Weiß jemand warum der das abschneidet?

T
2.224 Beiträge seit 2008
vor 8 Jahren

Hier müsste man wissen welchen Datentyp Longitude hat.
Sollte mindestens float, double oder decimal sein.

Das ToString sollte dir bei diesen Datentypen, abhängig von der aktuellen Culture, dann den String mit den Kommastellen liefern.
Machst du sonst noch was mit dem Text oder wird der danach so 1:1 angezeigt?
Der Code sagt aktuell nicht viel über das weitere Verhalten deiner App aus.
Auf den ersten Blick sollte es aber passen.

Notfalls mal debuggen was im Text drin steht.

Nachtrag:
Schau dir mal das Beispiel an aus der MSDN:
https://msdn.microsoft.com/de-de/library/windows/apps/windows.devices.geolocation.geolocator?cs-save-lang=1&cs-lang=csharp#code-snippet-2

Dort wird nicht Point.Position sondern Coordinate abgefragt.
Vielleicht leigt es daran?

Martin

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

M
Myrana Themenstarter:in
18 Beiträge seit 2015
vor 8 Jahren

Nachtrag:
Schau dir mal das Beispiel an aus der MSDN:

>

Dort wird nicht Point.Position sondern Coordinate abgefragt.
Vielleicht leigt es daran?

Daran kann liegt es nicht. Des Weiteren ist die Variante mit Coordinate veraltet.

Der Datentyp von Longitude ist double, daran liegt es also auch nicht..

Ich zeige das direkt in einer Textbox auf dem Display an..

344 Beiträge seit 2006
vor 8 Jahren

Hallo,

Und da?


double d = geoposition.Coordinate.Point.Position.Longitude;

auch schon ohne Kommastellen? Wenn da gut ist, liegs am ToString().

Gruss Lothi

16.834 Beiträge seit 2008
vor 8 Jahren
  1. Du solltest Dir im Debugger anschauen, was Longitude wirklich derzeit für einen Wert hat
  2. Es liegt vermutlich an Deinem ToString, das Standardmäßig nur ein Teil von Double darstellst.
    Du musst Dir mal die Überladung von ToString anschauen und Dir das passende Ausgabeformat aussuchen.
    Komisch ist nur, dass normalerweise ToString keinen Ganzzahlenwert zurück gibt.
    Es könnte also durchaus am Textbox-Format liegen; je nachdem, was Du für eine Oberflächentechnologie verwendest und ob dort ein Formatprovider hinterlegt ist.
M
Myrana Themenstarter:in
18 Beiträge seit 2015
vor 8 Jahren

Ne, ist da leider auch schon ohne Kommastellen..

16.834 Beiträge seit 2008
vor 8 Jahren

Dann auch hier (wie in dem andren Thread auch schon gesagt): [Artikel] Debugger: Wie verwende ich den von Visual Studio?
Und wenn die Quelle auch schon nur Ganzzahlen ausgibt, dann musst Du die Quelle wechseln oder schauen, wieso diese so reagiert.

Ich glaub jetzt nicht, dass es am Geolocator liegt, denn bei mir gibt dieser definitiv keine Ganzzahlen aus (egal bei welcher Culture / Region).

M
Myrana Themenstarter:in
18 Beiträge seit 2015
vor 8 Jahren

Das habe ich alles schon versucht.
Der Werte die der Geolocator hergibt sind immer schon abgeschnitten.
Lediglich auf dem Simulierten Windows Phone unter Weitere Tools bei der Ortung sehe ich die genauen Koordinaten..

T
2.224 Beiträge seit 2008
vor 8 Jahren

Eine Vermutung wäre noch, dass der Geolocator ggf. ein anderes Koordinaten Format eingestellt hat.
Es gibt neben Lat/Long auch andere Format, die dann natürlich auch andere Werte liefern.
Bei uns sollte Longitude eigentlich zwischen +10 und ggf. -10 liegen.
120 ist da doch ein recht hoher Wert, der auch eigentlich nicht sein könnte.

Kenne mich aber nicht genug mit dem Geolocator aus um dies sagen zu können.
Wenn der Wert so aber schon drin steht, wäre hier ein falsches Format noch am naheliegensten.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

M
Myrana Themenstarter:in
18 Beiträge seit 2015
vor 8 Jahren

War es leider auch nicht..