PushPin и Zoomin / Zoom для карт Bing

Вопрос 1

В настоящее время у меня настроены карты Bing, но я хочу добавить кнопки увеличения и уменьшения масштаба, в тот момент, когда я нажимаю кнопку поиска, и это переводит меня на уровень масштабирования 17, мне было интересно, какие две строки кода мне нужно писать, чтобы добавить или убрать единицу с уровня масштабирования при каждом нажатии кнопки?

вопрос 2

Я также хочу использовать канцелярскую кнопку в своем приложении.Я могу настроить простой набор для центрирования в одном месте, но я бы хотел, чтобы он центрировался, когда применяется новое местоположение, и оставался в том же месте, а не при прокрутке, он становится отсоединен от исходной центральной точки?


person Gaudreau95    schedule 15.11.2015    source источник
comment
Я считаю, что есть свойство ZoomLevel, которое является просто double, вы можете просто увеличить / уменьшить это значение при нажатии кнопки.   -  person Mike Eason    schedule 15.11.2015


Ответы (1)


Вот простая панель навигации с кнопками панорамирования и ползунком масштабирования:

<Grid HorizontalAlignment="Left" VerticalAlignment="Top" Height="290">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30"/>
        <ColumnDefinition Width="30"/>
        <ColumnDefinition Width="30"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="30"/>
        <RowDefinition Height="30"/>
        <RowDefinition Height="30"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Button Content="&#8657;" Width="25" Height="25" Grid.Column="1" Tag="Up" Click="PanMap_Click"/>
    <Button Content="&#8658;" Width="25" Height="25" Grid.Row="1" Grid.Column="2" Tag="Right" Click="PanMap_Click"/>
    <Button Content="&#8659;" Width="25" Height="25" Grid.Row="2" Grid.Column="1" Tag="Down" Click="PanMap_Click"/>
    <Button Content="&#8656;" Width="25" Height="25" Grid.Row="1" Tag="Left" Click="PanMap_Click"/>

    <Slider Name="ZoomBar" Orientation="Vertical" Height="180" Width="20" Margin="10,10" Grid.ColumnSpan="3" Grid.Row="3"
         HorizontalAlignment="Center" Minimum="1" Maximum="19" SmallChange="1"/>
</Grid> 

Для полосы масштабирования я использую свойство center карты следующим образом:

<m:Map Name="MyMap" ZoomLevel="{Binding Value, ElementName=ZoomBar, Mode=TwoWay}"/>

Вот код панорамирования:

private void PanMap_Click(object sender, RoutedEventArgs e)
{
    Button b = sender as Button;
    Point p;

    MyMap.TryLocationToViewportPoint(MyMap.Center, out p);

    if (p != null)
    {
        switch (b.Tag as string)
        {
            case "Up":
                p.Y -= 50;
                break;
            case "Down":
                p.Y += 50;
                break;
            case "Left":
                p.X -= 50;
                break;
            case "Right":
                p.X += 50;
                break;
        }

        Microsoft.Maps.MapControl.WPF.Location l;
        MyMap.TryViewportPointToLocation(p, out l);
        MyMap.SetView(l, MyMap.ZoomLevel);
    }
}

Что вы имеете в виду под вопросом 2? Если вы добавляете канцелярскую кнопку на карту, она должна оставаться привязанной к указанной вами координате, а не к центру карты при панорамировании, поскольку центр карты будет в другом месте. Вы просто хотите установить контроль над картой, который не перемещается при панорамировании?

person rbrundritt    schedule 16.11.2015