2011-11-21 58 views
1

有沒有什麼辦法可以直接請求訪問用戶的位置,或者是否有某種事件偵聽器會在位置訪問被授予後通知我?我遇到了與Director類一起使用MapView對象的問題,我認爲這取決於此。在CoronaSDK確認位置訪問

我有一個包含MapView組件的輔助視圖。當導演類切換到該視圖時,我的MapView對象被實例化並嘗試獲取用戶的位置。我遇到的問題是,在我的測試設備(iPhone 4)上,訪問用戶位置的嘗試發生在他們授予我位置訪問權之前,所以只有當他們離開該屏幕並稍後返回到它時(實例化它再次在導演庫中)我可以使用他們的位置。

這顯然不令人滿意。

任何幫助/建議?

回答

0

解決您的問題很大程度上取決於您的代碼。如果你想獲得幫助,你應該在SO問題中明確地包含相關的代碼位。

我打算做一個猜測,假設你的代碼看起來類似的MapView例如:

http://developer.anscamobile.com/reference/index/nativenewmapview

如果是這樣的話,問題是位置檢索很晚。

local function callMap() 
     -- Fetch the user's current location 
     -- Note: in XCode Simulator, the current location defaults to Apple headquarters in Cupertino, CA 
     local currentLocation = myMap:getUserLocation() 
     local currentLatitude = currentLocation.latitude 
     local currentLongitude = currentLocation.longitude 
     ... 

你想要的是該代碼執行得更早。理想情況下,應用程序啓動時。用戶將立即得到「此應用程序想要訪問GPS」消息,因此他們在查看地圖視圖之前將有更多時間「批准」。

你可以做的另一件事是使用緩存。將最新的已知位置存儲在某個位置(配置文件或數據庫,具體取決於您的設置)。當連接丟失或尚未檢索時,顯示地圖上的最後一個已知位置。

+0

要澄清,真正的問題是我無法確定用戶是否已授予位置訪問權限,然後才能獲取其位置。我想知道是否有一個事件,回調或者這種性質的東西,我可以用來響應用戶對我的位置訪問請求的批准。 –

+0

它看起來並不那樣。當gps訪問被禁用時,你獲得的經緯度是什麼? – kikito

+0

另外,嘗試檢查位置事件中的'event.isError'字段。也許你可以使用它。也許我應該進一步澄清/更確切地說明一下。http://developer.anscamobile.com/partner/mapview – kikito