Pergunta

Estou portando um aplicativo para iPhone para o WP7, que contém um mapa com vários marcadores/pushpins que recebo de um serviço da web (localização, ícone e título).

Eu configurei o XAML necessário para exibir o mapa, bem como algum código para o pushpin:

<phone:PhoneApplicationPage.Resources>
    <ControlTemplate x:Key="customPushpin" TargetType="my:Pushpin">
        <Image Height="39" Source="Resources/Icons/Pushpins/pinGreen.png" Stretch="Fill" Width="32"/>
    </ControlTemplate>
</phone:PhoneApplicationPage.Resources>

<Grid x:Name="LayoutRoot" Background="Transparent">
    <my:Map Height="Auto" HorizontalAlignment="Stretch" Margin="0" x:Name="Map"
            VerticalAlignment="Stretch" Width="Auto" CredentialsProvider="{Binding CredentialsProvider}" 
            CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" Center="{Binding Mode=TwoWay, Path=Center}" 
            ZoomBarVisibility="Visible" 
            ZoomLevel="{Binding Zoom, Mode=TwoWay}">
        <my:MapItemsControl ItemsSource="{Binding Pushpins}">
            <my:MapItemsControl.ItemTemplate>
                <DataTemplate>
                    <my:Pushpin MouseLeftButtonUp="Pushpin_MouseLeftButtonUp" 
                                Location="{Binding Location}" 
                                Template="{StaticResource customPushpin}">                           
                    </my:Pushpin>
                </DataTemplate>
            </my:MapItemsControl.ItemTemplate>
        </my:MapItemsControl>
    </my:Map>        
</Grid>

Estou procurando uma maneira de adicionar algum tipo de bolha quando o usuário clicar no pushpin. Eu analisei um pouco o InfoBoxes/Tool Damips, mas como eles trabalham no passe, isso não é algo que eu possa usar para o telefone (toque/clique).

Acho que não há controle semelhante no WP7 que cria uma bolha - como eu poderia criar algo semelhante?

Desde já, obrigado,

Alex

Foi útil?

Solução

Você pode simplesmente colocar uma borda quadrada dentro de Layoutroot com visibilidade = "colapsada"; em seguida, quando você clica em seu pushpin, atualiza o conteúdo e o torna visível.

Apenas certifique -se de colocar isso depois Seu controle de mapa (caso contrário, será renderizado atrás do mapa e, consequentemente, será invisível).

Outras dicas

A maneira mais fácil de conseguir isso é mostrar/ocultar o conteúdo do pushpin na torneira em vez de MouseleftButtonUp por causa de algumas considerações de desempenho.

void pushPin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   this.border.Visibility = System.Windows.Visibility.Visible;

    //stop the event from going to the parent map control
    e.Handled = true;
}

private void map_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
   this.border.Visibility = System.Windows.Visibility.Collapsed;   
}

Você pode criar um pop -up personalizado.

Um ótimo vídeo que exaplica como fazer isso está localizado aqui.

Outra solução está usando o contexto de Menu do Silverlight Toolkit para Windows Phone! Basta ir para o Coding4fun página no codeplex e faça o download (ele contém o kit de ferramentas) e no seu xaml dentro da definição de pushpin Adicionar seguidores:

<map:Pushpin x:Name="currentLocation">
<toolkit:ContextMenuService.ContextMenu>
    <toolkit:ContextMenu IsZoomEnabled="False">
        <toolkit:MenuItem Header="this is menu item 1" Click="MenuItem_Click" />
        <toolkit:MenuItem Header="this is menu item 2" Click="MenuItem_Click" />
        <toolkit:MenuItem Header="this is menu item 3" Click="MenuItem_Click" />
    </toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu></map:Pushpin>

Dessa forma, quando você toca e segura o pushpin, você receberá o ContectMenu! (Bom exemplo também encontrado aqui: exemplo )

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top