基于高德地图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请联系我微博