如何用单独的引脚替换MapView?

时间:2019-04-01 18:13:08

标签: c# forms xamarin prism mapsui

我正在尝试在Xamarin Forms应用程序(使用Mapsui和Prism)中更改MapView,因为我需要单独的视图来存储Pins。第一个MapView(称为default)用于显示列表中的所有图钉。第二个MapView(history)用于显示新的图钉,在离开Page时将其删除。

我有Dictionary用于存储我的MapView,从而可以轻松地访问所需的任何视图。每个创建的MapView都有相同的Map实例。我想从default更改为history,这应该隐藏在default视图中添加的图钉。

我以此来改变看法:

public void ChangeView(string name)
        {
            var prev = MapView;
            loggerService.Info($"Pins: {prev.Pins.Count}");
            MapView = GetView(name); // Current MapView in XAML, returns instance of MapView
            loggerService.Info($"New view pins: {MapView.Pins.Count}");

            Task.Factory.StartNew(() => 
            {
                Task.Delay(2000).Wait();

                loggerService.Info($"View pins: {MapView.Pins.Count}");
            });

            MapView.Refresh();
        }

带日志的额外代码用于调试目的-它显示正确的值(上一个引脚= 7,新引脚= 0,视图引脚= 0)。

我添加了history视图,但没有“缩放”按钮,以确保它正在更改-并且确实如此(因此,我认为无需发布XAML)。

在导航到历史记录时应如何更改MapView以隐藏图钉,并在切换回默认视图时显示它们? 还是有更好的方法将“图钉”分组并根据名称隐藏/显示它们?

更新 我认为这可能很重要:

public Pin AddMarker(Position point)
        {
            var pin = new Pin(MapView)
            {
                Label = "PinType.Pin",
                Position = point,
                Type = PinType.Pin,
                Transparency = 0.5f,
                Color = Xamarin.Forms.Color.FromRgb(2, 144, 210),
                Scale = 0.5f,
            };

            MapView.Pins.Add(pin);

            return pin;
        }

这是我添加图钉以查看的方式。这与上面的MapView相同(所有代码均来自MapService)。

1 个答案:

答案 0 :(得分:0)

某些选项

对于较低级别的功能,您可能需要示例以助您一臂之力:https://mapsui.com/documentation/samples.html