我刚在真实设备上尝试过我的第一个WP7应用程序。我的问题是我使用地理位置作为其中一个功能,但我总是得到位置未知。
我不知道是否有任何方法可以向我的应用授予位置权限,或者我是否遗漏了某些内容。
在手机设置中,位置服务已启用,地图应用程序在查找我的实际位置时没有任何问题。
我检查了GeoCoordinateWatcher.Permisson属性,其值为“Granted”。
我已在WMAppManifest.xml中使用此行<Capability Name="ID_CAP_LOCATION"/>
。
要解决它的任何想法吗?
[编辑]
这是我的代码。在你告诉我这样做之后我添加了起跑线,但我仍然遇到问题。
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 :(得分:2)
等待位置服务准备就绪。您的GeoCoordinateWatcher有一个状态更改事件,另一个用于更改位置。您的代码应如下所示。
//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;
}
由于您似乎有些悲伤,我建议您首先在状态更改事件中添加一个消息框,以便您可以判断它是否会在您的手机上触发,并且一旦您获得排序尝试更改位置等。
另外,你试过去外面吗?您可能无法获得GPS锁定,并且手机信号塔位置并不总是有效。走出去,清除高楼大厦。如果你住在高楼,可以去阳台或(最重要的是)在屋顶上。