Вы можете достичь этого с помощью MessagingCenter
Работает GIF.
В 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