基于高德地图Windows Phone API 快速开发地图相关APP(二)

基础知识前面做过介绍 http://www.cnblogs.com/piaocz/archive/2012/08/14/2638097.html

 

下面说说 分层管理覆盖物的功能:

 

我们把不同的覆盖物 添加在不同的层上,可以进行快速有效的管理。

例如:我有一些点 添加在层1 上,我可以批量控制显示或者隐藏,或者一起调整视野。而层2上的点不受影响!

Com.AMap.Maps.Api.MapLayer

主要由这个类来控制。

 

我们来弄2个层管理数据(可以N层):

 <AMap:MMap x:Name="map" ToolBar="Visible" Zoom="10" Center="116.397428, 39.90923">
                <AMap:MapLayer x:Name="layer1"></AMap:MapLayer>
                <AMap:MapLayer x:Name="layer2"></AMap:MapLayer>
            </AMap:MMap>

 

 

 1 /// <summary>
 2         /// 层一添加覆盖物
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void Layer1AddOverlay_Click(object sender, RoutedEventArgs e)
 7         {
 8             this.layer1.Children.Add(new MMarker(map.Center));
 9             this.layer1.Children.Add(new MMarker(new MLngLat(map.Center.LngX+0.1,map.Center.LatY+0.1)));
10             this.layer1.Children.Add(new MMarker(new MLngLat(map.Center.LngX + 0.21, map.Center.LatY + 0.21)));
11             this.layer1.Children.Add(new MMarker(new MLngLat(map.Center.LngX + 0.31, map.Center.LatY + 0.1)));
12             
13             this.layer1.SetOverlaysFitView();
14         }
this.layer1.SetOverlaysFitView();//将该层的所有可视的(Visible)并添加到该图层的Overlay对象调整在视野范围内

 1 /// <summary>
 2         /// 层1 所有覆盖物的显示和隐藏
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void Layer1ShowOrHidden(object sender, RoutedEventArgs e)
 7         {
 8             Button button = sender as Button;
 9             if (this.layer1.Visibility == System.Windows.Visibility.Visible)
10             {
11                 this.layer1.Visibility = System.Windows.Visibility.Collapsed;
12                 button.Content = "显示层1";
13             }
14             else
15             {
16                 this.layer1.Visibility = System.Windows.Visibility.Visible;
17                 button.Content = "隐藏层1";
18             }
19         }

 

 1  /// <summary>
 2         /// 层2 添加覆盖物
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void Layer2AddOverlays(object sender, RoutedEventArgs e)
 7         {
 8             MLngLatCollection mcs = new MLngLatCollection();
 9             mcs.Add(map.Center);
10             mcs.Add(new MLngLat(map.Center.LngX + 0.21, map.Center.LatY + 0.11));
11             mcs.Add(new MLngLat(map.Center.LngX + 0.31, map.Center.LatY + 0.231));
12             mcs.Add(new MLngLat(map.Center.LngX + 0.11, map.Center.LatY + 0.431));
13             mcs.Add(new MLngLat(map.Center.LngX + 0.21, map.Center.LatY + 0.231));
14             this.layer2.Children.Add(new MPolyline(mcs));
15             this.layer2.Children.Add(new MMarker(map.Center) { IconURL = "/Samples/051.png" });
16             this.layer2.Children.Add(new MMarker(new MLngLat(map.Center.LngX + 0.31, map.Center.LatY + 0.131)) { IconURL = "/Samples/051.png" });
17             
18         }

 

1 /// <summary>
2         /// 层2 添加覆盖物视野调整
3         /// </summary>
4         /// <param name="sender"></param>
5         /// <param name="e"></param>
6         private void Layer2OverlaysFitView(object sender, RoutedEventArgs e)
7         {
8             this.layer2.SetOverlaysFitView();
9         }

 

分层管理还有很多空间可以自由发挥,功能我就先说到这里吧




更多高级功能我在以后会提及!

开发中有任何问题和bug请联系我微博

 http://weibo.com/piaochunzhi

 
posted @ 2012-08-17 16:08  贝壳笨  阅读(1761)  评论(5编辑  收藏  举报