0

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

我必须Dictionary存储我的 MapView,以便轻松访问我想要的任何视图。每个创建的 MapView 都有相同的 Map 实例。我想从应该隐藏视图中添加的引脚更改default为。historydefault

我用这个改变视图:

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 以在导航到历史记录时隐藏图钉并在我切换回默认视图时显示它们?还是有更好的方法来“分组” Pin 图并根据名称隐藏/显示它们?

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

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;
        }

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

4

1 回答 1

0

一些选项

对于较低级别的功能,您可能需要示例才能让您上路:https ://mapsui.com/documentation/samples.html

于 2019-04-01T19:13:25.623 回答