определить маркер, который перейдет к активности xamarin.forms - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над приложением xamarin.forms. Пользовательская карта показывает маркеры из базы данных, когда пользователь нажимает на вывод PIN-кода. окно пользовательской информации тогда, если он нажмет на это Информационное окно переходит к другому виду деятельности, отображает дополнительную информацию. Я использовал образец по этой ссылке и не могу перейти от кода к активности со всеми данными, которые будут отображаться в этой операции

enter image description here

Мне нужна помощь, пожалуйста

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете достичь этого с помощью MessagingCenter

Работает GIF.

enter image description here

В CustomMapRenderer

Вы должны отправить сообщение с помощью MessageCenter.

  void OnInfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e)
    {
        var customPin = GetCustomPin(e.Marker);
        if (customPin == null)
        {
            throw new Exception("Custom pin not found");
        }

        if (!string.IsNullOrWhiteSpace(customPin.Url))
        {
            var url = Android.Net.Uri.Parse(customPin.Url);
            MessagingCenter.Send<App, string>(App.Current as App, "OpenPage", customPin.Address + "");
        }
    }

Когда вы подписываетесь на это сообщение, вы можете открыть страницу навигации. Примечание: Вы можете отправлять информацию по аргументу.

 MessagingCenter.Subscribe<App, string>(App.Current, "OpenPage", (snd, arg) =>
        {
            Device.BeginInvokeOnMainThread(() => {
                Navigation.PushAsync(new NavigationPage(new DetailsInfo(arg)));
            });
        });

Есть статья о том, как использовать MessagingCenter.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/messaging-center

Вот мое демо.Вы можете обратиться к нему.

https://github.com/851265601/MapUseMessageCenter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...