• 基于高德地图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

     
  • 相关阅读:
    epoll精髓 C++ 技术中心 C++博客
    【找茬】split string 力为的技术博客 C++博客
    不谈技术~蛇年,我回来了!
    不说技术~希望所有人都好好的
    DDD~充血模型和失血模型
    基础才是重中之重~何为原子化操作
    DDD~概念中的DDD
    策略模式
    windows句柄和消息技术
    观察者模式2(observer)
  • 原文地址:https://www.cnblogs.com/piaocz/p/2644250.html
Copyright © 2020-2023  润新知