2016-05-07 123 views
4

我通過使用Geolocator插件獲取xamarin.forms中的GPS位置來捕獲緯度&經度Listview_ItemTapped。 但平均超過15秒捕獲位置。有沒有什麼方法可以立即獲得位置信息。如何在Xamarin.forms中即時獲取GPS位置?

if (CrossGeolocator.Current.IsGeolocationEnabled == false) 
{ 
    await DisplayAlert("Notification", "Geolocation is Unavailable ", "Ok"); 
} 
else 
{ 
    Application.Current.Properties["LATITUDE"] = null; 
    Application.Current.Properties["LONGITUDE"] = null; 

    var locator = CrossGeolocator.Current; 
    //locator.DesiredAccuracy = 50;    
    var position = await locator.GetPositionAsync(timeoutMilliseconds: 50000); 

    Application.Current.Properties["LATITUDE"] = position.Latitude; 
    Application.Current.Properties["LONGITUDE"] = position.Longitude; 

    await Navigation.PushAsync(new RetailerDetailsPage(), false); 
} 

我試圖通過消除locator.DesiredAccuracy = 50;但有時又它的工作原理立即&有時它不是。

回答

4

是的,你可以得到更快的反應,但它取決於你的要求。長時間的回答包括瞭解每個設備的型號,要求的精確度,GPS採集時間,當前的物理環境(室內,室外,GPS衛星的物理陰影,等等)...所有效果需要多久才能獲得完整的GPS響應。

儘管Xamarin.Plugin Geolocator非常棒,我一直都在使用它,但它不提供對各種平臺特定位置功能的訪問。

的iOS你可以使用上CoreLocation的RequestLocation蘋果公司描述爲對用戶的位置「速戰速決」。這將執行最快的GPS通電,獲取並關閉可用的電源。獲得那個快速的一次性位置非常棒。

的Android你可以使用谷歌的Play FusedLocationProviderApi(FusedLocationApi),並通過GetLastLocation搶用戶的位置。這將立即返回該位置(很可能它爲空)。

使用谷歌定位服務,您可以通過使用表單Dependency Service平臺特有的,你可以得到一個獲得基於只是用戶的wifi連接(基於SSID)等的位置...

所以快速定位,然後使用Xamarin.Plugin的Geolocator獲得更準確和/或更近的位置。

這正是我們在啓動啓動時在應用程序中的後臺線程上所做的,因爲用戶看到的第一個視圖是他們在自定義地圖上的位置,而不是從完整的GPS位置獲取後臺線程(可能更準確的位置),我們可以調整地圖...

+0

謝謝@SushilHangover但在我的情況下,我需要快速和準確的位置,用戶可能會在戶外環境。我只需要精確的經度和緯度,它確認了用戶訪問該位置。我不打算在地圖上顯示用戶的位置。也大多用戶將是遠程位置,不保證良好的無線或互聯網連接。那麼實現這個最好又簡單的方法是哪個? –

+0

@GaneshParikh在你的情況下,你需要依靠一個完整的GPS位置,這隻會發生與設備/模型對請求的響應一樣快。所以你要麼像你一樣繼續這樣做,要麼在用戶點擊ListView之前開始在後臺**中檢查用戶的GPS位置,並且在他們確實已經有緩存的長/可用的時候停止背景GPS更新 – SushiHangover