[英]Pushpin callout bing maps sdk metro app xaml c#
I'm working with bing maps sdk for windows store apps. 我正在为Windows应用商店使用bing maps sdk。 I'm trying to display a callout as soon as I click a pushpin.
单击图钉后,我试图显示标注。 How can I do it?
我该怎么做? I know I need a custom control, but it would be nice to have code to do it.
我知道我需要一个自定义控件,但是有代码可以很好地做到这一点。 Where can I find an example?
在哪里可以找到示例?
Thank You! 谢谢!
include the popup as a child of the map control. 将弹出窗口作为地图控件的子项包含在内。
<!-- Map Control -->
<map:Map x:Name="map" Credentials="{StaticResource BingCredentials}"
ShowScaleBar="True"
ShowNavigationBar="False"
ShowBreadcrumb="False"
LogoPosition="TopRight"
ViewRestriction="OneWorldOnly"
Loaded="Map_Loaded"
PreloadArea="Medium">
<!-- pins -->
<map:MapLayer x:Name="mapPinLayer" Visibility="Visible">
<map:MapItemsControl x:Name="mapPins" ItemsSource="{Binding}">
<map:MapItemsControl.ItemTemplate>
<DataTemplate>
<map:Pushpin IsTapEnabled="True" Style="{StaticResource PushPinStyle}" map:MapLayer.Position="{Binding Location}" Tag="{Binding}" Tapped="Pushpin_Tapped" />
</DataTemplate>
</map:MapItemsControl.ItemTemplate>
</map:MapItemsControl>
</map:MapLayer>
<!-- pin popup -->
<Popup x:Name="PushpinPopup" IsLightDismissEnabled="True" DataContext="{Binding}" Tag="{Binding}">
<Border BorderBrush="#F08D45" BorderThickness="1">
<Grid Background="White" Width="300" >
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Background="#F08D45">
<TextBlock Grid.Row="0" Foreground="White" FontSize="16" FontWeight="Bold" Text="{Binding Name}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10" />
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Vertical" Margin="15">
<StackPanel Orientation="Horizontal" Visibility="{Binding Telephone, Mode=OneWay, Converter={StaticResource StringToVisibility}}">
<TextBlock Text="Tel" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" FontSize="12" />
<TextBlock Text="{Binding Telephone}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" FontSize="12" />
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding Fax, Mode=OneWay, Converter={StaticResource StringToVisibility}}">
<TextBlock Text="Fax" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" FontSize="12" />
<TextBlock Text="{Binding Fax}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" FontSize="12" />
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding Email, Mode=OneWay, Converter={StaticResource StringToVisibility}}">
<TextBlock Text="Email" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5" FontSize="12" />
<HyperlinkButton Content="{Binding Email}" NavigateUri="{Binding EmailMailTo}" HorizontalAlignment="Left" ClickMode="Press"
VerticalAlignment="Center" Margin="5" FontSize="12" Foreground="#F08D45" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button x:Name="buttonGetDirections" Click="buttonGetDirections_Click">Get Directions</Button>
<Button x:Name="buttonShowServices" Click="buttonShowServices_Click" Tag="{Binding}">Services</Button>
</StackPanel>
</StackPanel>
</Grid>
</Border>
</Popup>
</map:Map>
and then handle the pushpin tapped event: 然后处理图钉敲击事件:
private void Pushpin_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
Pushpin p = sender as Pushpin;
if (p != null && p.Tag != null)
{
PushpinModel model = p.Tag as PushpinModel;
if (model != null) ShowPushpinContent(model);
}
}
private void ShowPushpinContent(PushpinModel model)
{
PushpinPopup.IsOpen = false;
PushpinPopup.DataContext = model;
PushpinPopup.IsOpen = true;
MapLayer.SetPosition(PushpinPopup, model.Location);
currentmodel = model;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.