2011-05-23 4 views
2

Je viens d'essayer ma première application WP7 sur un périphérique réel. Mon problème est que j'utilise la géolocalisation pour l'une des fonctionnalités, mais j'ai toujours une localisation inconnue. Je ne sais pas s'il existe un moyen d'accorder des autorisations de localisation à mon application ou si quelque chose me manque. Dans les paramètres du téléphone, les services de localisation sont activés et l'application de cartes fonctionne sans aucun problème pour trouver ma position réelle. J'ai vérifié la propriété GeoCoordinateWatcher.Permisson et sa valeur est "Accordée". J'ai déjà cette ligne <Capability Name="ID_CAP_LOCATION"/> dans WMAppManifest.xml.L'emplacement renvoie toujours "Inconnu"

Des idées pour le résoudre?

[EDIT]

Voici mon code. J'ai ajouté la ligne de départ après m'avoir dit de le faire, mais j'ai toujours le problème.

string location = "41,0"; 
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(); 
watcher.Start(); 
var myPosition = watcher.Position; 

if (!myPosition.Location.IsUnknown) { 
location = myPosition.Location.Latitude + "," + myPosition.Location.Longitude; 

}

+0

Pouvez-vous fournir le code que vous utilisez pour obtenir des informations de localisation? Aussi, à quoi ressemble votre WMAppManifest.xml? – ColinE

+0

Avez-vous appelé Start() sur l'instance de GeoCoordinateWatcher que vous utilisez? Vous pouvez également consulter les conseils de [Jaime Rodriguez] (http://blogs.msdn.com/b/jaimer/archive/2010/11/11/geocoordinatewatcher-tips-part1.aspx) pour voir si cela sonne la cloche. –

+0

J'ai modifié le post pour vous montrer mon code. Je l'ai basé dans ce tutoriel: http://channel9.msdn.com/Series/Windows-Phone-7-Development-for-Absolute-Beginners/GPS-Location-API-and-Calling-Web-Services Mon manifeste est celui par défaut. – enkara

Répondre

1

Attendez que les services de localisation pour être prêt. Votre GeoCoordinateWatcher a un événement pour le changement d'état et un autre pour le changement de position. Votre code devrait ressembler à ceci.

//this goes somewhere in your startup sequence 
_geoCoordinateWatcher.StatusChanged += 
    new EventHandler<GeoPositionStatusChangedEventArgs>(_gcw_StatusChanged); 
_geoCoordinateWatcher.PositionChanged += 
    new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(_gcw_PositionChanged); 
_geoCoordinateWatcher.MovementThreshold = 50; //metres 
_geoCoordinateWatcher.Start(); 

... 

static void _gcw_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) 
{ 
    if (e.Status == GeoPositionStatus.Ready) 
    PhoneApplicationService.Current.State["CurrentLocation"] = 
     _geoCoordinateWatcher.Position.Location; 
} 

static void _gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
{ 
    PhoneApplicationService.Current.State["CurrentLocation"] = e.Position.Location; 
} 

Puisque vous semblez avoir une certaine douleur que je vous suggère de commencer par mettre un messagebox en cas de changement d'état afin que vous puissiez dire s'il se déclenche sur votre téléphone, et une fois que vous obtenez qui tentent triés pour le changement de position, etc.

En outre, avez-vous essayé d'aller dehors? Vous ne pouvez pas obtenir un verrou GPS à l'intérieur et l'emplacement de la cellule ne fonctionne pas toujours. Aller à l'extérieur et se dégager des grands bâtiments. Si vous vivez dans un highrise, sortez sur un balcon ou (le meilleur de tous) sur le toit.

+0

Merci pour votre aide. J'ai travaillé sur d'autres projets et j'ai dû abandonner celui-ci, mais je travaille de nouveau dessus. J'ai essayé votre code mais comme je suis un débutant, je ne sais pas comment déclarer certaines variables lorsque Visual Studio se plaint. J'ai fait une recherche dans Google et je suis venu à cette page: http://www.codeproject.com/Articles/134982/A-helper-class-to-get-the-current-location-on -a-Wi Je n'obtiens aucun résultat avec cette classe non plus. Je contrôle chaque fonction et je ne saisis que le constructeur et GetLocation. Le problème n'est pas le signal GPS, car d'autres applications dans le téléphone fonctionnent bien – enkara