我正在编写一个Xamarin.Forms PCL应用程序,以支持我的应用程序的iOS和Android操作系统。
在根项目中,我有一个包含ViewList和地图的视图(来自Xamarin.Forms.Maps)。
我了解到必须为每个平台使用CustomRenderer来添加自定义行为。我想要实现的是添加一个LocationManager / GeoLocation以通过GPS识别用户位置并用别针/标记显示他的位置。除此之外,我从几个人的根项目中获得了位置,这些位置也必须在地图中显示。
我是否必须使用界面导出功能或使用适当的自定义地图渲染器?
我不知道如何实现,Xamarin.Forms网站上的示例和Stackoverflow中的研究都没有提示。
这是我到目前为止的一些代码(摘录):
mockRepo.Setup(s => s.Get(It.IsAny<Func<User, bool>>())).Returns(expr => {
User[] users = new User[] {
new User { UserName = CorrectUserName, Password = CorrectPassword },
new User { UserName = WrongUserName, Password = "foobar" },
};
return users.Where(expr).FirstOrDefault();
});
答案 0 :(得分:0)
您应该使用GetLocation
并声明使用LocationServices
[assembly: UsesPermission(Manifest.Permission.AccessFineLocation)]
[assembly: UsesPermission(Manifest.Permission.AccessCoarseLocation)]
这对于获取设备的GPS坐标并非绝对必要,但此示例将尝试为当前位置提供街道地址:
[assembly: UsesPermission(Manifest.Permission.Internet)]
将一个名为InitializeLocationManager的方法添加到活动
void InitializeLocationManager()
{
_locationManager = (LocationManager) GetSystemService(LocationService);
Criteria criteriaForLocationService = new Criteria
{
Accuracy = Accuracy.Fine
};
IList<string> acceptableLocationProviders = _locationManager.GetProviders(criteriaForLocationService, true);
if (acceptableLocationProviders.Any())
{
_locationProvider = acceptableLocationProviders.First();
}
else
{
_locationProvider = string.Empty;
}
Log.Debug(TAG, "Using " + _locationProvider + ".");
}
LocationManager类将侦听来自设备的GPS更新,并通过事件通知应用程序。在此示例中,我们要求Android提供匹配给定Criteria集的最佳位置提供程序,并将该提供程序提供给LocationManager。
有关如何使用Xamarin表格获取当前位置的详细信息,请点击以下链接:https://developer.xamarin.com/recipes/android/os_device_resources/gps/get_current_device_location/