我在我的应用程序中使用了Map控件,我需要设置可见区域,使其覆盖所有引脚。 具有讽刺意味的是同样的代码在平台上都不起作用,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)));
任何人都可以解释一下吗?为什么我需要像它一样编码。
答案 0 :(得分:2)
我找到了一个解决方法,我在接受我自己的答案之前等待一些解释
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(customMap.CustomPins [0].Pin.Position, Distance.FromMiles(55.0)));
return false;
});
答案 1 :(得分:0)
在IOS和Android上使用Xamarin Geolocator插件尝试以用户当前位置为中心时,我遇到了MovetoRegion被延迟(15-30秒)的问题。 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;
});
});
}