1

我在我的应用程序中使用地图控件,我需要设置可见区域以使其覆盖所有引脚。具有讽刺意味的是,相同的代码在两个平台上都不起作用,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)));

谁能解释一下?为什么我需要这样编码?

4

2 回答 2

3

我找到了一种解决方法,我正在等待一些解释,然后再接受我自己的答案

Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
                    {
                        customMap.MoveToRegion(MapSpan.FromCenterAndRadius(customMap.CustomPins [0].Pin.Position, Distance.FromMiles(55.0)));
                        return false;
                    });
于 2016-05-10T19:45:07.347 回答
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;
            });
        });
    }
于 2018-04-23T21:05:18.910 回答