2012-11-20 53 views
1

我想獲取手機的當前位置,然後將座標發送到我的網絡服務器來處理數據以將一些結果返回到我的應用程序。xcode地理位置:獲取視圖加載之前的座標

我現在面臨的問題是視圖首先加載,然後只有它獲得座標。

我該如何獲得座標,以便我可以將它們發送到我的網絡服務器來處理和發回數據,以便我可以顯示在我的視圖中?

謝謝!

+0

是擁有該視圖的控制器在獲取座標之前嘗試向您的服務器發送座標?這是問題。你應該顯示該類的代碼。 – rdelmar

+0

我正在關注(http://www.altinkonline.nl/tutorials/xcode/corelocation/find-longitude-and-latitude-by-corelocation-xcode/)教程 它有一個viewdidload爲: - (void)viewDidLoad { [super viewDidLoad]; //在從其筆尖加載視圖後執行其他任何設置。 [self setLocationManager:[[CLLocationManager alloc] init]]; [locationManager setDelegate:self]; [locationManager setDistanceFilter:kCLDistanceFilterNone]; [locationManager setDesiredAccuracy:kCLLocationAccuracyHundredMeters]; [locationManager startUpdatingLocation]; } – dan

+0

這並沒有什麼幫助。我不明白你的問題 - 你說視圖首先加載,然後才獲得座標。那有什麼問題? – rdelmar

回答

1

如果您的視圖控制器在呈現之前真的需要位置信息,它可以讓呈現視圖控制器在轉換之前執行位置服務。如果沒有呈現視圖控制器(即需要位置的視圖控制器當前是根視圖控制器),則可以引入一個新的根視圖控制器,該視圖控制器將在轉換到主視圖控制器之前執行位置服務。

此呈現視圖控制器應(每個位置感知編程指南)應該創建CLLocationManager,發起位置服務,並且在接收到CLLocationManagerDelegate適當didUpdateLocations,它就可以停止位置服務和過渡到主視圖控制器。也許這個中間視圖控制器還應該在位置服務正在執行的同時顯示一些很好的「請稍候」屏幕或default.png圖像的副本以及UIActivityIndicatorView

實際上,您並不一定需要介紹這個中間視圖控制器。你可以用你的主視圖控制器來完成這一切。您可以使用異步事件驅動的編碼模式。因此,在提供視圖之前,您可以推遲Web服務的性能,直到位置服務得到滿足爲止。例如,this simple test project調用位置服務,並在完成後向Web服務提交Web請求並解析JSON響應。不需要中間視圖控制器。

不過請注意,蘋果公司只會皺眉(即可能會拒絕)僅在位置服務成功時纔有效的應用程序,因此您可能需要考慮應用程序應該如何處理,如果它無法使用位置服務。您必須優雅地處理該場景,也許使用最後一個已知位置。

+0

Hi Rob,感謝您參加此問題。那麼我對xcode很陌生。你有什麼樣的例子嗎? – dan

+0

感謝您的更新,以及我在從初級到中級再到後期的第二部分迷路。我現在正在嘗試的是,首先加載視圖以將這些數據轉換爲單例,然後自動加載實際視圖以從單例中讀取數據。但我的新頭痛是當我嘗試加載另一個視圖,它給了我錯誤:故事板()不包含視圖控制器與標識符'secondViewController' – dan

+0

我認爲我的問題是,我實際上創建了一個每個課程的故事板。我有class1.h,class1.m&class1.storyboard和每個視圖的這3個文件。那麼我在這裏做些什麼? Coz即使在填寫'storyboard ID'後仍然會得到錯誤不包含視圖控制器的標識符 – dan

0

那麼,爲什麼不能你之前視圖中找到當前位置,以便同時推到地圖上的位置,我們可以通過這些座標,並調用Web服務,使我們能夠顯示數據,我認爲接下來我們會得到你想要的東西

相關問題