4

我创建了一个 Bing Maps WPF 对话框,并希望以编程方式设置中心和缩放级别。我试过使用SetValue(),但我没有找到合适的属性来传递给它。

这是我的 Bing 地图对话框的 XAML:

<Window 
        x:Class="RAPMkI.BingMapsDialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
        Title="BingMapsDialog" Height="378" Width="467">
    <Grid>
        <m:Map CredentialsProvider="Haha, nice try."/>
        <Button Content="Locate" Margin="0,0,0,0" Name="button1" HorizontalAlignment="Right" Width="Auto" Height="Auto" VerticalAlignment="Top" />
    </Grid>
</Window>

代码隐藏如下所示:

namespace RAPMkI
{
    /// <summary>
    /// Interaction logic for BingMapsDialog.xaml
    /// </summary>
    public partial class BingMapsDialog : Window
    {
        public BingMapsDialog(Location center, int zoom)
        {
            InitializeComponent();
        }
    }
}

有没有办法在初始化时设置我的对话框的中心和缩放级别,使用Location我通过它的和缩放?

4

4 回答 4

8

我意识到这是一个较老的问题,但接受的答案不再正确,如果曾经是的话,所以我希望这对其他人有帮助。

Center属性不是方法,因此尝试设置它是行不通的。我也在墙上撞了一会儿,然后一直在非洲西海岸(纬度:0,经度:0)结束。

你正在寻找的是SetView(Location location, Double Zoom)

这是参考:
https ://msdn.microsoft.com/en-us/library/hh709343.aspx

重写上面的例子:

public BingMapsDialog(Location center, double zoom)
{
    InitializeComponent();
    theMap.SetView(center, zoom);
}

应该是所有需要的。

于 2015-03-03T22:21:09.690 回答
4

您首先需要为您的地图命名,以便您可以通过编程方式访问它。例如:

<m:Map Name="theMap" CredentialsProvider="Haha, nice try."/>

然后在您希望更改的位置设置Center和属性。ZoomLevel例如:

public BingMapsDialog(Location center, int zoom)
{
    InitializeComponent();
    theMap.Center = center;
    theMap.ZoomLevel = zoom;
}

如果这不起作用,您可能需要在事件处理程序中设置Center和。ZoomLevelLoaded

于 2012-07-19T01:01:07.470 回答
1

Map 有两个可绑定的属性: ZoomLevel 和 Center 。您可以做的是将视图绑定到一个视图模型,该模型具有两个属性,分别代表 ZoomLevel 和 Center。

ZoomLevel 是双倍的,因此可以通过添加一个滑块来做一件好事,该滑块的值也绑定到 viewmodel 中代表缩放级别的内容。这样,您可以使用滑块更改缩放。

*请注意,您需要将绑定模式设置为“TwoWays”

于 2015-10-11T00:20:39.317 回答
0

您可以在 XAML 文件中定义初始位置,例如:

<m:Map x:Name="mMap" 
               CredentialsProvider= "xxxxxxxxxx" 
               Center="40.13618,-0.45822" 
               ZoomLevel="15">
</m:Map>

然后以编程方式,您可以同时设置中心和缩放级别,例如:

mMap.SetView(mylocation, myzoomlevel) 'mylocation -> Location, myzoomlevel -> Double

或单独:

mMap.Center = mylocation
mMap.ZoomLevel = myzoomlevel
于 2017-10-09T07:49:44.013 回答