Bing 地图图钉和放大/缩小
Bing Maps PushPin and Zoomin / Zoom out
问题 1
我目前已经设置了 Bing 地图但是我想添加一个放大和缩小按钮,在我按下搜索按钮的那一刻,它把我带到了 17 的缩放级别,我是想知道我必须编写哪两行代码才能在每次单击按钮时添加或从缩放级别中删除一个?
问题 2
我也希望在我的应用程序中使用图钉我可以设置一个简单的一组以在一个位置居中,但我希望它在应用新位置时居中并留在同一位置而不是当向外滚动时,它会与原来的中心点断开连接?
这是一个提供平移按钮和缩放滑块的简单导航栏:
<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="⇑" Width="25" Height="25" Grid.Column="1" Tag="Up" Click="PanMap_Click"/>
<Button Content="⇒" Width="25" Height="25" Grid.Row="1" Grid.Column="2" Tag="Right" Click="PanMap_Click"/>
<Button Content="⇓" Width="25" Height="25" Grid.Row="2" Grid.Column="1" Tag="Down" Click="PanMap_Click"/>
<Button Content="⇐" 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>
对于缩放条,我将它放在地图的中心 属性,如下所示:
<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 是什么意思?如果您将图钉添加到地图,它应该保持连接到您指定的坐标,而不是在您平移时地图的中心,因为地图的中心将是一个不同的位置。您只是想在平移时不移动的地图上放置一个控件吗?
问题 1
我目前已经设置了 Bing 地图但是我想添加一个放大和缩小按钮,在我按下搜索按钮的那一刻,它把我带到了 17 的缩放级别,我是想知道我必须编写哪两行代码才能在每次单击按钮时添加或从缩放级别中删除一个?
问题 2
我也希望在我的应用程序中使用图钉我可以设置一个简单的一组以在一个位置居中,但我希望它在应用新位置时居中并留在同一位置而不是当向外滚动时,它会与原来的中心点断开连接?
这是一个提供平移按钮和缩放滑块的简单导航栏:
<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="⇑" Width="25" Height="25" Grid.Column="1" Tag="Up" Click="PanMap_Click"/>
<Button Content="⇒" Width="25" Height="25" Grid.Row="1" Grid.Column="2" Tag="Right" Click="PanMap_Click"/>
<Button Content="⇓" Width="25" Height="25" Grid.Row="2" Grid.Column="1" Tag="Down" Click="PanMap_Click"/>
<Button Content="⇐" 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>
对于缩放条,我将它放在地图的中心 属性,如下所示:
<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 是什么意思?如果您将图钉添加到地图,它应该保持连接到您指定的坐标,而不是在您平移时地图的中心,因为地图的中心将是一个不同的位置。您只是想在平移时不移动的地图上放置一个控件吗?