以 xamarin 形式获取经纬度的设备位置

Posted

技术标签:

【中文标题】以 xamarin 形式获取经纬度的设备位置【英文标题】:Get device location in latitude-longitude in xamarin forms 【发布时间】:2016-11-03 09:39:24 【问题描述】:

我的应用程序中有一个扫描仪,当我扫描任何二维码时,我需要以经纬度获取设备的当前位置。我不知道如何获取位置,所以我现在没有任何代码。建议我一些在扫描完成 QR 码时获取位置的方法。

【问题讨论】:

【参考方案1】:

地理定位器插件示例:

var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
var position = await locator.GetPositionAsync (timeoutMilliseconds: 10000);
Console.WriteLine ("Position Status: 0", position.Timestamp);
Console.WriteLine ("Position Latitude: 0", position.Latitude);
Console.WriteLine ("Position Longitude: 0", position.Longitude);

参考:https://github.com/jamesmontemagno/GeolocatorPlugin

Nuget:https://www.nuget.org/packages/Xam.Plugin.Geolocator

【讨论】:

我在我的 OnAppearing 方法中使用了这个方法,但是在 GetPositionAsync 之后 App 崩溃了,你知道它会是什么吗? 嗨,我在我的 xamarin android 项目中使用这个插件,但我收到任务取消异常。我已经在模拟器和真实设备上进行了测试,都得到了相同的结果。 确保在 Android 解决方案属性中选中 ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION 嗨@MichaelYuwono,我正在尝试在应用睡眠模式下获取当前位置的位置。但我无法使用此代码获取它,var position = await locator.GetPositionAsync();请帮助我实现这一目标。【参考方案2】:

对于对这个位置的东西感到困惑的每个人,我建议使用 Xamarin Essentials 而不是上面提到的插件。

            var location = await Geolocation.GetLastKnownLocationAsync();                                
            if (location != null)
            
                MyLocation = location;
                if (!ShowUserLocation)
                    ShowUserLocation = true;
            

【讨论】:

但它是跨平台的吗?我想要 xamarin 表单级别的所有内容,而不是 android 或 ios 是的@MYil 它的跨平台docs.microsoft.com/en-us/xamarin/essentials/…【参考方案3】:

我推荐 Xamarin Essentials。 查看这篇文章并检查您的权限。 https://docs.microsoft.com/en-us/xamarin/essentials/geolocation?tabs=android

var Latitude;
var Longitude;    
var request = new GeolocationRequest(GeolocationAccuracy.Best);
                    var location = await Geolocation.GetLocationAsync(request);

                    if (location != null)
                    
                        if (location.IsFromMockProvider)
                        
                            //Put a message if detect a mock location.
                        else
                        
                            Latitude=location.Latitude;
                            Longitude=location.Longitude;
                        
                    

【讨论】:

以上是关于以 xamarin 形式获取经纬度的设备位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin Forms 中获取设备的 GPS 位置?

如何以 xamarin 形式获取 android 和 IOS 设备令牌?

以 xamarin 形式获取当前屏幕宽度

xamarin 形式的地理定位器

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为

如何获取android移动设备的当前位置经纬度?