Как я могу получить координаты по щелчку мыши с ViewportPointToLocation? - PullRequest
0 голосов
/ 18 февраля 2019

Я использую SDK управления Bing карты WPF, чтобы попытаться получить координаты и напечатать их

Мне удалось получить координаты центра текущего LocationRect, используя EventHandler, связанный с нажатием стрелок I 'мы пытались использовать ту же концепцию с обработчиками событий щелчка мышью, но она не работала, сначала я зарегистрировал событие, используя обозначение + = следующим образом:

public MainWindow()
        {
            InitializeComponent();
            MainMap.Mode = new AerialMode(true);
            MainMap.Focus();
            MainMap.Culture = "ar-sa";

            MainMap.MouseDoubleClick += new MouseButtonEventHandler(MapWithPushpins_MouseDoubleClick);
        }

private void MapWithPushpins_MouseDoubleClick(object sender,  MouseButtonEventArgs e)
    {
        e.Handled = true;

        Point mousePosition = e.GetPosition(this);
        Location pinLocation = MainMap.ViewportPointToLocation(mousePosition);

        Pushpin pin = new Pushpin();
        pin.Location = pinLocation;


        Coordinates.Text = pinLocation.Longitude.ToString();
        MainMap.Children.Add(pin);

    }   

И вот файл XAML:

<Window x:Class="Ornina.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
        xmlns:local="clr-namespace:Ornina"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid VerticalAlignment="Top" >
            <m:Map CredentialsProvider="AqCitpgSjIz_Sxd6AyI9Zm1rs1uRSG_G3Y7ebfok69ufB8W8uRdUtvheaRbz_10t" x:Name="MainMap" Center="36,38" ZoomLevel="16" Mode="AerialWithLabels" HorizontalAlignment="Center" VerticalAlignment="Top" Height="300" Width="500">
            </m:Map>
        </Grid>
        <TextBlock x:Name="Coordinates">Coordinations</TextBlock>
    </Grid>
</Window>

Программа не отвечает ни на что, без исключений, без ошибок

1 Ответ

0 голосов
/ 18 февраля 2019

Ваш TextBlock находится перед вашей картой, поэтому карта не получает событие MouseDoubleClick.

Вы можете изменить TextBlock на:

  <TextBlock x:Name="Coordinates"
             HorizontalAlignment="Left"
             VerticalAlignment="Top"
             Text="Coordinations" />

Так что это только вверхний левый угол, а не перед всей картой.

Или вы можете полностью переместить его за пределы карты, в другую строку или столбец сетки.

...