2 {
3 public string Cityname { get; set ; }
4
5 public CustomCommand(string name)
6 {
7 this.Cityname = name;
8 }
9
10 public overrIDe voID Execute(Microsoft.Maps.MapControl.Core.MapBase map)
11 {
12 double longitude = 0d;
13 double latitude = 0d;
14
15 //根据指定地点的经度和纬度进行定位
16 if (Cityname.Equals("重庆" ))
17 {
18 longitude = double.Parse("106.489384971208" );
19 latitude = double.Parse("29.5076372217973" );
20 map.ZoomLevel = 8 ;
21 }
22
23 map.Center = new Location(latitude, longitude);
24
25 NavigationbarCommandStatus status = this .GetStatus(map);
26 if (status == NavigationbarCommandStatus.Checked)
27 {
28 map.ScaleVisibility = Visibility.Collapsed;
29 }
30 else if (status == NavigationbarCommandStatus.normal)
31 {
32 map.ScaleVisibility = Visibility.Visible;
33 }
34 }
35
36 public overrIDe NavigationbarCommandStatus GetStatus(Microsoft.Maps.MapControl.Core.MapBase map)
37 {
38 return base .GetStatus(map);
39 }
40 } 通过实现Execute方法,将地图动态定位到重庆的经度和纬度的位置就OK了。如上完成了自定义的功能菜单导航的功能处理类,接下来就是需要处理Bing Maps控件的界面模板了。功能导航条的界面模板分为横向和竖向导航条模板容器,分别为:HorizontalPanel和VerticalPanel,实现自定义功能导航条既移除原始的UIElement然后将自定义的NavigationbarCommand作为导航功能元素添加到模板容器内就完成了。 1 public partial class MainPage : UserControl
2 {
3 public MainPage()
4 {
5 InitializeComponent();
6 myMap.MapForeground.TemplateApplIEd += delegate(object sender, EventArgs args)
7 {
8 myMap.MapForeground.Navigationbar.TemplateApplIEd += delegate(object obj, EventArgs e)
9 {
10 //清除导航菜单上现有项
11 Navigationbar navbar = myMap.MapForeground.Navigationbar;
12 navbar.HorizontalPanel.Children.Clear();
13 navbar.VerticalPanel.Children.Clear();
14
15 //添加自定义导航菜单项
16 ChangeMapModebutton btnAerial = new ChangeMapModebutton(new AerialMode(true), "卫星地图", "点击导航到卫星地图" );
17 btnAerial.IsChecked = true ;
18 navbar.HorizontalPanel.Children.Add(btnAerial);
19
20 ChangeMapModebutton btnRoad = new ChangeMapModebutton(new RoadMode(), "路径地图", "点击导航到路径地图" );
21 btnRoad.IsChecked = false ;
22 navbar.HorizontalPanel.Children.Add(btnRoad);
23
24 //分割线
25 navbar.HorizontalPanel.Children.Add(new CommandSeparator());
26
27 CommandTogglebutton btnCQ = new CommandTogglebutton(new CustomCommand("重庆"), "重庆", "地图定位到重庆" );
28 navbar.HorizontalPanel.Children.Add(btnCQ);
29 };
30 };
31 }
32 } 如上使用了自定义的CustomCommand给功能导航条上添加了“重庆”,当点击重庆的时候就会将地图动态定位到重庆的相应地图级别,如下预览图: 呵呵,大功告成了。Biing Maps Silverlight Control内部也提供了很多导航命令,比如用于放大/缩小地图级别的ZoomMapCommand、分割线命令ZoomMapCommand以及改变地图呈现模式的 ChangeMapModeCommand等等。 总结
以上是内存溢出为你收集整理的【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)全部内容,希望文章能够帮你解决【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)