【发布时间】:2014-09-20 22:59:03
【问题描述】:
如何使用 Xamarin Forms Labs 中的“GeoLocator”功能。当我在课堂上添加“GeoLocator”方法时,我不断收到 this.SetProperty 不存在的错误。有人知道如何使用“地理定位器”吗?
【问题讨论】:
标签: xamarin.forms
如何使用 Xamarin Forms Labs 中的“GeoLocator”功能。当我在课堂上添加“GeoLocator”方法时,我不断收到 this.SetProperty 不存在的错误。有人知道如何使用“地理定位器”吗?
【问题讨论】:
标签: xamarin.forms
SetProperty 仅在最新的预发布 nuget 包中可用,它是我们的 Base ViewModel 中的一种方法...
你必须展示你的代码才能看到你想要做什么。
但它应该像这样简单:
var geolocator = DependencyService.Get<IGeolocator>();
var result = geolocator.GetPositionAsync(10000);
var strLatitude = result.Latitude.ToString("N4");
var strLongitude = result.Longitude.ToString("N4"),
【讨论】:
除了 Rui 的回答,我建议使用 Plugins for Xamarin 来处理这种类型的行为。具体来说,Geolocator Plugin for Xamarin and Windows。
这两个地理定位代码库都源自 Xamarin.Mobile,但据我所知,该插件更新了一些,并且还支持 Windows 10 (UWP) 开发。
【讨论】:
如果您发布一些您正在使用的代码,帮助您会更容易。但与此同时,SetProperty 不存在,因为您没有从 Xamarin.Forms.Labs.Data.ObservableObject 类继承。它包含SetProperty 方法,该方法仅仅是INotifyPropertyChanged 的一个实现(如果值不同则更改属性并引发PropertyChanged 事件)。
因此,您可以从 XFormsLab 的 ObservableObject 继承(或者它是从 ObservableObject、Xamarin.Forms.Labs.Mvvm.ViewModel 继承的基本视图模型类),然后您将可以访问 SetProperty。或者你根本不能使用SetProperty,而是使用你自己的INotifyPropertyChanged实现
【讨论】:
我们从这个库中获取了代码并对其进行了清理。您可以在此处克隆 repo:
https://github.com/MelbourneDeveloper/Adapt.Presentation.git
每个平台都有完整的示例。如果您运行该示例,您将看到一个 GeoLocator 选项卡,它应该可以在所有平台上运行。 Android 和 UWP 已经过全面测试。
NuGet 包 Adapt.Presentation 在某种程度上有效,但我很难让它在所有平台上正常工作。
【讨论】: