WP7 Pushpin Tooltip/Bubble
-
27-09-2019 - |
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
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 )