Géolocalisation en C #
Je suis en train de développer une application qui doit être quelque chose comme un jeu. L'utilisateur aurait certains endroits dans une ville et qu'il aurait à faire quelque chose sur chaque emplacement. Afin de suivre la position de l'utilisateur, j'ai essayé d'utiliser la géolocalisation avec le code suivant:
Geolocator geolocator = new Geolocator();
//geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.High;
geolocator.DesiredAccuracyInMeters = 50;
try
{
Geoposition geoposition = await geolocator.GetGeopositionAsync(TimeSpan.FromMilliseconds(500), TimeSpan.FromSeconds(1));
textLatitude.Text = "Latitude: " + geoposition.Coordinate.Latitude.ToString("0.0000000000");
textLongitude.Text = "Longitude: " + geoposition.Coordinate.Longitude.ToString("0.0000000000");
textAccuracy.Text = "Accuracy: " + geoposition.Coordinate.Accuracy.ToString("0.0000000000");
}
À l'aide de la façon suivante pour obtenir les coordonnées j'ai essayé de tester si l'appareil localiser mon poste correctement avec le code suivant:
if( Math.Abs(geoposition.Coordinate.Latitude - 45.3285) < 0.001 ){
if (Math.Abs(geoposition.Coordinate.Longitude - 14.4474) < 0.001)
{
txt.Text = "KONT";
}
}
Le problème est que la précision de la localisation est vraiment petit, si j'ai essayer d'utiliser plus de coordonnées précises, il ne pourrait jamais obtenir les mêmes coordonnées de nouveau, et avec ce code, la précision est vraiment mauvais (il peut échouer, même à 300 mètres).
Quelqu'un a une idée comment faire pour obtenir une mesure plus fiable de l'emplacement, ou un autre moyen de corriger ça?
source d'informationauteur user2700896
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème se produit, parce que vous donnez trop peu de temps pour Geolocator à faire une bonne lecture avec Geolocator.GetGeopositionAsync - timeout:
Vous donner seulement 1 seconde, tout en obtenant plus précis de la position prend du temps.
Mon exemple:
Le code ci-dessus returs une position (dans mon cas) avec une précision de ~35 mètres, MAIS après une attente de 20 à 30 secondes. Notez également que la précision dépend de nombre de disposition des satellites.
Également quelques remarques de MSDN:
ensemble Geolocator.ReportInterval à 0:
ensemble Geolocator.DesiredAccuracyInMeters à 10 mètres:
essayer de dealy entre le point de départ Geolocator et reding:
Au moins pour moi, le code fonctionne bien, Et j'arrive à "txt.Texte = "KONT"
Où en êtes-vous de vous trouver la constante de latitude ou de longitude?
essayez ceci: