2011-05-23 88 views
2

我剛剛在真實設備上嘗試了我的第一個WP7應用程序。我的問題是我使用地理定位功能之一,但我總是得到位置未知。 我不知道是否有任何方法將位置權限授予我的應用程序,或者我缺少某些東西。 在手機設置中,位置服務已啓用,並且地圖應用在查找我的實際位置時沒有任何問題。 我檢查了GeoCoordinateWatcher.Permisson屬性,其值爲「已授予」。 我在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

你能提供你用來獲取位置信息的代碼嗎?你的WMAppManifest.xml是什麼樣的? – ColinE 2011-05-23 15:57:13

+0

您是否在您使用的GeoCoordinateWatcher實例上調用了Start()?您還可以查看[Jaime Rodriguez的提示](http://blogs.msdn.com/b/jaimer/archive/2010/11/11/geocoordinatewatcher-tips-part1.aspx),看看是否有鈴聲響起。 – 2011-05-23 16:59:11

+0

我已編輯帖子向您展示我的代碼。我在本教程中使用它:http://channel9.msdn.com/Series/Windows-Phone-7-Development-for-Absolute-Beginners/GPS-Location-API-and-Calling-Web-Services 我的清單是默認的清單。 – enkara 2011-05-25 09:11:17

回答

1

等待位置服務做好準備。你的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鎖定,並且手機信號塔位置無法正常工作。走出去,清除高樓。如果你住在高層,在陽臺上或(最重要的)在屋頂上出去。

+0

謝謝你的幫助。我一直在研究其他項目,我不得不放棄這個項目,但我正在努力。 我試過你的代碼,但由於我是新手,我不知道如何在Visual Studio抱怨的地方聲明一些變量。 我已經在谷歌搜索,我已經到了這個頁面: http://www.codeproject.com/Articles/134982/A-helper-class-to-get-the-current-location-on -a-Wi 我也沒有得到任何結果。我控制每個功能,我只輸入到構造函數和GetLocation。 問題不在於GPS信號,因爲手機中的其他應用程序正常工作 – enkara 2011-07-13 10:18:50

相關問題