c# windows-phone-7 windows-phone-8 windows-phone bing-maps
descargar desde aquí

c# - Eliminar/ocultar el mensaje sin conexión del mapa de Bing cuando no está conectado



windows-phone-7 windows-phone-8 (3)

Estoy desarrollando una aplicación para Windows Phone que usa el control anterior WP7 Microsoft.Phone.Controls.Maps.Map / Bing Map.

Los mosaicos de mapas se sirven desde una fuente local, por lo que la aplicación no necesita una conexión de red para funcionar. Desafortunadamente, el control de mapa insiste en mostrar "No se puede contactar con el Servidor. Vuelva a intentarlo más tarde". mensaje sobre el mapa cuando está fuera de línea.

¿Alguien sabe de un método para eliminar / ocultar este mensaje?

En caso de que tenga curiosidad, estoy desarrollando una aplicación WP8 pero utilizando el control de mapa WP7 Bing depreciado ya que el nuevo control de mapa WP8 no proporciona ningún método para reemplazar el mapa base de Bing.


Creo que esto te conviene más:

void YourPage_Loaded(object sender, RoutedEventArgs e) { m_Map.ZoomLevel = 11; m_Map.LayoutUpdated += m_Map_LayoutUpdated; } void m_Map_LayoutUpdated(object sender, EventArgs e) { if (!isRemoved) { RemoveOverlayTextBlock(); } } void RemoveOverlayTextBlock() { var textBlock = m_Map.DescendantsAndSelf.OfType<TextBlock>() .SingleOrDefault(d => d.Text.Contains("Invalid Credentials") || d.Text.Contains("Unable to contact Server")); if (textBlock != null) { var parentBorder = textBlock.Parent as Border; if (parentBorder != null) { parentBorder.Visibility = Visibility.Collapsed; } isRemoved = true; } }

LinqToVisualTree incluir una clase LinqToVisualTree bruja se puede descargar desde aquí . Y aquí está la publicación original


Puede manejar el evento LoadingError por instancia o ampliar el control Map usted mismo como se describe en esta publicación . A continuación, puede eliminar la capa que contiene el mensaje de error para que no se muestre al usuario.

public partial class CachedMap : Map { public CachedMap() : base() { base.LoadingError += (s, e) => { base.RootLayer.Children.RemoveAt(5); }; } }


Sé que es un hilo muy viejo, pero de todos modos ...

Puede escuchar el evento LoadingError como se sugiere @keyboardP, buscar el control LoadingErrorMessage en el árbol visual y simplemente ocultarlo.

Map.LoadingError += MapOnLoadingError; private void MapOnLoadingError(object sender, LoadingErrorEventArgs e) { var errorMessage = Map.FindChildOfType<LoadingErrorMessage>(); errorMessage.Visibility = Visibility.Collapsed; }