简体   繁体   English

图钉标注Bing Maps SDK Metro App XAML C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM