Как заменить MapView с отдельными контактами?

Я пытаюсь изменить MapView в моем приложении Xamarin Forms (с Mapsui и Prism), так как мне нужно отдельное представление для хранения булавок. Первый MapView (давайте назовем это default) для отображения всех выводов из списка. Второй MapView (history) для отображения новых выводов, которые удаляются при выходе из Page.

я имею Dictionary для хранения моих MapViews, чтобы иметь простой способ получить доступ к любому виду, который я хочу. Каждый созданный 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 просмотр без кнопок Zoom, чтобы убедиться, что он меняется - и это так (поэтому нет необходимости публиковать 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 ответ

Решение

Некоторые варианты

  • Возможно, вы можете привязать свойство IsVisible Pins к полю HistoryMode в вашем представлении. Я никогда не использовал это сам.
  • Используйте некоторые функциональные возможности более низкого уровня. подобно

Для функциональности более низкого уровня вам могут понадобиться примеры, чтобы помочь вам: https://mapsui.com/documentation/samples.html

Другие вопросы по тегам