基于高德地图Windows Phone API 快速开发地图相关APP(二)
基础知识前面做过介绍 http://www.cnblogs.com/piaocz/archive/2012/08/14/2638097.html
下面说说 分层管理覆盖物的功能:
我们把不同的覆盖物 添加在不同的层上,可以进行快速有效的管理。
例如:我有一些点 添加在层1 上,我可以批量控制显示或者隐藏,或者一起调整视野。而层2上的点不受影响!
Com.AMap.Maps.Api.MapLayer
主要由这个类来控制。
我们来弄2个层管理数据(可以N层):
1 2 3 4 | <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请联系我微博
分类:
WP7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!