如何用单独的 Pin 替换 MapView?

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


我必须Dictionary存储我的 MapViews 才能轻松访问我想要的任何视图。每个创建的 MapView 都有相同的 Map 实例。我想从which should hide pins that added in view更改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();

        }

带有日志的额外代码用于调试目的 - 它显示正确的值(prev pins = 7,new pins = 0,view pins = 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;

        }

这是我添加 Pin 图以查看的方式。这个和上面的MapView是一样的(所有代码都来自于MapService)。


料青山看我应如是
浏览 63回答 1
1回答

翻过高山走不出你

一些选项也许您可以将 Pins 的 IsVisible 属性绑定到视图中的 HistoryMode 字段。我自己从来没有用过这个。使用一些较低级别的功能。喜欢为默认和历史使用单独的图层,并在需要时启用/禁用它们。您可能需要将 WGS84(gps 坐标)转换为 SphericalMercator。https://mapsui.com/api/Mapsui.Projection.SphericalMercator.html?q=sphericalmercator使用主题样式。它有一种方法,可用于指定您需要的任何样式(可见/颜色/符号)和特征属性。https://mapsui.com/api/Mapsui.Styles.Thematics.ThemeStyle.html?q=themestyle对于较低级别的功能,您可能需要示例来帮助您上路:https ://mapsui.com/documentation/samples.html
打开App,查看更多内容
随时随地看视频慕课网APP