2012-10-10 53 views
0

我目前正在開發一個iPhone的移動應用程序,它包含一個部分,需要確定用戶當前的位置和最近的位置(存儲在手機中的緯度,長點) 。我有以下問題:在iPhone中確定用戶當前的位置和最近的位置

1-用戶是否需要連接到互聯網,以便他/她的位置可以由我們的應用程序確定? GPS的設計不足以確定用戶當前位置爲經緯度嗎?

2-因爲我們將一些位置保存在應用程序中,可以在沒有互聯網連接的情況下從用戶當前位置確定最近的位置(例如5公里內)嗎?

如果可以提供代碼示例來縮小上述答案的範圍,那將非常感謝。

非常感謝

+1

我猜GPS需要通過互聯網連接發送和接收數據。如果您有本地存儲的數據(座標),則可以離線計算離線的離線。 – keyser

+1

你想在Android或iPhone – 2012-10-10 11:19:11

+0

由於用戶的手機在他的手機中有一個GPS設備,爲什麼應用程序需要連接到互聯網,因爲GPS應該默認情況下以離線模式確定用戶當前位置。在上面的問題中,我不是指在線地圖(Google或Bing地圖)中顯示用戶當前位置,而只是確定用戶當前的經緯度,long.f用戶當前位置可以在沒有互聯網連接的情況下計算,然後肯定地找到最近的位置(存儲爲拉特,長在電話中)不需要互聯網連接,可以通過等式來確定 – user1659529

回答

1

嗯,ür第一問題u需要不需要獲取您的當前位置的互聯網連接。

對於第二個問題,如果你能夠獲得你的位置座標(經度,緯度)we will be having some locations as lat,long stored in the application那麼你可以計算座標並找出它們之間的距離。

從座標

public static float distFrom(float lat1, float lng1, float lat2, float lng2) { 
    double earthRadius = 6371; 
    double dLat = Math.toRadians(lat2-lat1); 
    double dLng = Math.toRadians(lng2-lng1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
       Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
       Math.sin(dLng/2) * Math.sin(dLng/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double dist = earthRadius * c; 

    return(float)(dist); 
    } 

及其Java實現haversine公式的使用下面的函數計算距離。用它來尋找距離。

+0

感謝NejiHyuga爲您提供了有希望的答案。在這種情況下,您可以給出一個編碼示例,用於通過手機GPS在內部計算用戶當前位置,而無需連接到互聯網?這是IOS和Android如果可能 – user1659529

+0

代碼更新!! :) – Neji

+0

如果我的答案幫助你,然後不要忘記接受它! – Neji

0

是的,你必須要找到下使用谷歌API 5或東西英里最近的位置信息,與此API,你會發現一切..country信息,最近location..ect

使用此鏈接: - http://maps.google.com/maps/geo?q=%f,%f&output=json&oe=utf8&sensor=true_or_false&key=ABQIAAAAO_WEDXjKUGDDHu8iB2FQ-xTFGipc9T1i1tjtezgvz0dWKwv3jxTjn5y1VrjIixtSrXmeMwiaCfxS8g

+0

感謝Nivrit Gupta,但爲什麼我需要使用Google API來查找離這些位置最近的位置,因爲這些位置經常在離線狀態下存儲在手機數據庫中? – user1659529

+0

我仍然期待已確認的答案這個職位的兩個問題:) – user1659529

+0

你好朋友請使用下面的鏈接下載演示https://github.com/heardrwt/GeocoderDemo ...在此之後安裝此演示在您的設備在你當前位置lat的幫助下,你可以找到最近的位置和其他相關信息。如果你有任何問題,然後讓我知道 –