O 'pushpin' personalizado do Bing maps não aparece sem mover o mapa

estou a trabalhar numa aplicação do windows 8 usando C# e XAML. O aplicativo tem uma página de mapas que tem pushpins personalizados. Adicionei a chave personalizada usando o seguinte código:

    <Style x:Key="PushPinStyle" TargetType="bm:Pushpin">
        <Setter Property="Width" Value="25"/>
        <Setter Property="Height" Value="39"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Image Source="Assets/pushpin_icon.png" Stretch="Uniform" HorizontalAlignment="Left"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>

Assim que activar o código acima, os pushpins não aparecem a menos que o mapa seja movido pelo utilizador. O seguinte código é usado para gerar o mapa. DataTemplate -

    <DataTemplate x:Key="pushpinSelector" >
        <bm:Pushpin Tapped="pushpinTapped" Style="{StaticResource PushPinStyle}">
            <bm:MapLayer.Position >
                <bm:Location Latitude="{Binding Latitude}" Longitude="{Binding Longitude}"/>
            </bm:MapLayer.Position>
        </bm:Pushpin>
    </DataTemplate>

mapas XAML-

            <bm:Map.Children>
                <bm:MapItemsControl Name="pushPinModelsLayer" 
                     ItemsSource="{Binding Results}" 
                     ItemTemplate="{StaticResource pushpinSelector}" />
            </bm:Map.Children>
        </bm:Map>

logo que remova o estilo personalizado para o 'Pushpin', o 'pushpin' por omissão aparece correctamente sem necessitar de para mover o mapa. Gostaria que as pushpins cutom aparecessem da mesma forma sem necessidade de mover manualmente o mapa. Obrigado pela solução com antecedência.

Author: user1925635, 2012-12-24

2 answers

Já tentou usar um controlo personalizado para o PIN de push do mapa

Crie um controlo usando o modelo de controlo do Utilizador fornecido, adicione os componentes necessários, eventos, faça a personalização de que necessita.

Exemplo:

CustomPushPin pushpin = new CustomPushPin(); mapView.Children.Add(pushPin); MapLayer.SetPosition(pushPin, location);

Onde,

    Customompushpin o seu controlo personalizado do utilizador pushpin.
  1. a localização é do tipo de localização da classe.

Avisa-me se ainda enfrentares o problema

 1
Author: Rajmohan Kathiresan, 2013-01-18 12:22:40
Isto tem sido frustrante. A solução com que acabei foi criar um efeito de oscilação sempre que adicionava os meus pushpins. Sempre que atualizo a minha lista de pushpins, eu mudo os MapBounds (através de uma propriedade de dependência personalizada).

Neste método eu estouro os limites do mapa ligeiramente e depois amplio para os limites desejados, assim:

public static LocationRect GetMapBounds(DependencyObject obj)
{
    return (LocationRect)obj.GetValue(MapBoundsProperty);
}

public static void SetMapBounds(DependencyObject obj, LocationRect value)
{
    obj.SetValue(MapBoundsProperty, value);
}

public static readonly DependencyProperty MapBoundsProperty = DependencyProperty.RegisterAttached("MapBounds", typeof(LocationRect), typeof(MapBindings), new PropertyMetadata(null, OnMapBoundsChanged));

private static void OnMapBoundsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var map = d as Bing.Maps.Map;
    if (map != null)
    {
        // sigh.  "Wiggle" the view to force map pins to appear
        LocationRect destRect = e.NewValue as LocationRect;
        if (destRect != null)
        {
            LocationRect wiggleRect = new LocationRect(destRect.Center, destRect.Width + 0.001,
                                                        destRect.Height + 0.001);

            map.SetView(wiggleRect, MapAnimationDuration.None);
            map.SetView(destRect, new TimeSpan(0, 0, 1));
        }
    }
}

Isto faz com que a vista se mova automaticamente, fazendo com que os pushpins apareçam.

É um pouco ... hack, mas pelo menos funciona. Além disso, tem o efeito colateral de popping a vista um pouco para mostrar ao usuário que a vista mudou. Espero que isso ajude.
 1
Author: Buzzrick, 2013-05-29 22:38:04