Bing Maps Silverlight Control支持用户自定义绘制多边形(Polygon)图形,包括三角形、四边形(矩形、菱形)、以及其他更多多边形的图形绘制。
多边形说简单点就是一个由多条边组成的有一定规则的图形,比如三角形就是由三条边组成,我们要在地图上绘制三角形需要知道三个顶点的坐标值(精度和纬度),如下代码块:
private void btnPolygon_Click(object sender, RoutedEventArgs e) { MapPolygon polygon = new MapPolygon(); polygon.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red); polygon.StrokeThickness = 5; polygon.Opacity = 0.7; polygon.Locations = new LocationCollection() { new Location(34.9294740237661,107.506492025863), new Location(37.7814222409819, 105.979148275863), new Location(40.2865067209496, 109.219382650863) }; this .myMap.Children.Add(polygon); }
MapPolygon就是Bing Maps提供的一个多边形类,如上代码块则实现了在地图上绘制一个三角形,主要就是利用三个点的坐标通过Locations进行定位绘制图层,效果如下:相应的如果是绘制四变形也就是多一个顶点的多边形而已,示意代码如下:代码
<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> private void btnQuad_Click( object sender, RoutedEventArgs e) { MapPolygon polygon = new MapPolygon(); // 填充颜色 polygon.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red); polygon.Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Yellow); polygon.StrokeThickness = 5 ; polygon.Opacity = 0.7 ; polygon.Locations = new LocationCollection() { new Location( 34.9294740237661 , 107.506492025863 ), new Location( 37.7814222409819 , 105.979148275863 ), new Location( 40.2865067209496 , 109.219382650863 ), new Location( 29.8104584489867 , 115.943992025863 )}; this .myMap.Children.Add(polygon); }
除了上面通过代码动态绘制多边形外,也可以通过Map控件进行配置,如下示例:
代码<!-- <br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> < m:Map CredentialsProvider ="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU" x:Name ="myMap"
Center ="34.9294740237661,107.506492025863" ZoomLevel ="4" NavigationVisibility ="Collapsed" >
< m:MapPolygon Locations ="30,108 39,102 34.88,90.021" Fill ="Red" StrokeThickness ="5" Opacity ="0.8" ></ m:MapPolygon >
</ m:Map >
如上图中红色的三角形就是通过初始化配置进去的,平时二次开发中使用动态创建相对较多。上面提到四边形分菱形和矩形,Bing Maps 也提供了专门绘制矩形和菱形的类,比如矩形是Rectangle类。二次开发中经常会涉及到需要自己绘制一些图形在地图上,或者是在地图上动态选择绘制, 了解绘制图形的基本原理后实现这些都非常简单,实际上就是给Map控件添加一个子元素,也可以理解为Silverlight的UIElement。
希望通过本文抛砖引玉,欢迎大家前来一起讨论交流,共同学习进步。
相关说明
本文属学习笔记文章,愿与有志者共同学习交流。欢迎转载,但请在明显地位标记本文的原文连接。
作 者:Beniao
文章出处:http://beniao.cnblogs.com/ 或 http://www.cnblogs.com/
» 下一篇: 【Silverlight】Bing Maps学习系列(六):使用扩展模式(Extended Modes)
<script src="http://partner.googleadservices.com/gampad/google_service.js" type="text/javascript"></script><script type="text/javascript"> try { GS_googleAddAdSenseService("ca-pub-4210569241504288"); GS_googleEnableAllServices(); } catch (e) { } </script><script src="http://partner.googleadservices.com/gampad/google_ads.js"></script><script type="text/javascript"> try { GA_googleAddSlot("ca-pub-4210569241504288", "cnblogs_blogpost_body"); GA_googleAddSlot("ca-pub-4210569241504288", "cnblogs_commentbox_up"); GA_googleAddSlot("ca-pub-4210569241504288", "cnblogs_blogpost_bottom"); } catch (e) { } </script><script type="text/javascript"> try { GA_googleFetchAds(); } catch (e) { } </script><script type="text/javascript"> var blog_ad_has_shown = false; </script>
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.cnblogs.com/beniao/archive/2009/12/09/1616956.html" dc:identifier="http://www.cnblogs.com/beniao/archive/2009/12/09/1616956.html" dc:title="" trackback:ping="http://www.cnblogs.com/beniao/services/trackbacks/1616956.aspx" /> </rdf:RDF> --> <!-- end: topics 文章、评论容器--> <!-- done-->
@ looklook
如果不能访问公网就需要自己搭建Map数据服务器,这也是地图的一个最大的的卖点,企业需要在地图上进行二次开发,将自己企业需要的一些东西扩展在地图上,如果自己不搭建Map服务器用公网的所有东西都暴露了。
比如电信通信行业的地图应用就很典型,电信通过地图的二次开发,可以将他们所建立的通信基站全部呈现在地图上,通过地图搜索进行基站定位,通过监控系统可以监控基站运行状态,查询基站运行相关信息。