Xamarin 表单地图中的 MoveToRegion 行为异常
MoveToRegion in xamarin forms maps behaves strangely
我在我的应用程序中使用地图控件,我需要设置可见区域,使其覆盖所有引脚。
具有讽刺意味的是,相同的代码在两个平台上都不起作用,iOS 工作起来很笨拙,下面的代码在两个平台上产生几乎相同的可见区域。
if(Device.OS == TargetPlatform.iOS)
customMap.MoveToRegion (MapSpan.FromCenterAndRadius (customMap.CustomPins [0].Pin.Position, Distance.FromMiles (0.20)));
if(Device.OS == TargetPlatform.Android)
customMap.MoveToRegion (MapSpan.FromCenterAndRadius (customMap.CustomPins [0].Pin.Position, Distance.FromMiles (55.0)));
谁能解释一下?为什么我需要这样编码?
我找到了解决方法,我正在等待一些解释,然后再接受我自己的答案
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(customMap.CustomPins [0].Pin.Position, Distance.FromMiles(55.0)));
return false;
});
当我尝试使用 Xamarin Geolocator 插件在 IOS 和Android。使用 Saket Kumar 的 500 毫秒延迟方法,效果会好很多。这是我的代码片段,希望这对某人有所帮助。
private void CenterOnMe_Clicked(object sender, EventArgs e)
{
var locator = CrossGeolocator.Current;
var t = Task.Run(async () =>
{
var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
AroundMeMap.MoveToRegion(
MapSpan.FromCenterAndRadius(
new Position(position.Latitude, position.Longitude), Distance.FromMiles(1)));
return false;
});
});
}
我在我的应用程序中使用地图控件,我需要设置可见区域,使其覆盖所有引脚。 具有讽刺意味的是,相同的代码在两个平台上都不起作用,iOS 工作起来很笨拙,下面的代码在两个平台上产生几乎相同的可见区域。
if(Device.OS == TargetPlatform.iOS)
customMap.MoveToRegion (MapSpan.FromCenterAndRadius (customMap.CustomPins [0].Pin.Position, Distance.FromMiles (0.20)));
if(Device.OS == TargetPlatform.Android)
customMap.MoveToRegion (MapSpan.FromCenterAndRadius (customMap.CustomPins [0].Pin.Position, Distance.FromMiles (55.0)));
谁能解释一下?为什么我需要这样编码?
我找到了解决方法,我正在等待一些解释,然后再接受我自己的答案
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(customMap.CustomPins [0].Pin.Position, Distance.FromMiles(55.0)));
return false;
});
当我尝试使用 Xamarin Geolocator 插件在 IOS 和Android。使用 Saket Kumar 的 500 毫秒延迟方法,效果会好很多。这是我的代码片段,希望这对某人有所帮助。
private void CenterOnMe_Clicked(object sender, EventArgs e)
{
var locator = CrossGeolocator.Current;
var t = Task.Run(async () =>
{
var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
AroundMeMap.MoveToRegion(
MapSpan.FromCenterAndRadius(
new Position(position.Latitude, position.Longitude), Distance.FromMiles(1)));
return false;
});
});
}