ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(三)--绘制点、线、圆,显示提示信息

平台:Vs 2010,Blend 4,Silverlight 4

调用API: ArcGis for Silverligth API(ESRI.ArcGIS.Client)


OK,今天又有空来写点啦,这个例子自己不想拉的太长了,所以这节多写点东西,我尽量把东西都介绍全面,有不懂的可以留言~

有空大家共同讨论。


好进入正题,如今天标题所示,我们先来看画点,线,圆吧!

01 /// <summary>
02 /// 绘制界面上的点和线
03 /// </summary>
04 /// <param name="myMap"></param>
05 /// <param name="point"></param>
06 /// <param name="pointLine"></param>
07 public void DrawAnimationCompleted(Map myMap, List<Graphic> point,ESRI.ArcGIS.Client.Geometry.PointCollection pointLine)
08 {
09     GraphicsLayer gPointLayer = new GraphicsLayer();
10     GraphicsLayer lineLayer = new GraphicsLayer();
11     SimpleLineSymbol lineSymbol = new SimpleLineSymbol();
12     lineSymbol.Color = new SolidColorBrush(Colors.Brown);
13     lineSymbol.Width = 1;
14     lineSymbol.Style = SimpleLineSymbol.LineStyle.Solid;
15  
16     // 画线到图层上并绘制到地图上
17     GisMap.AddLayersToMap(myMap, new GraphicsLayer[] { lineLayer });
18     GisLine.DrawLineOnMap(pointLine, lineLayer, lineSymbol);
19  
20     GisMap.DrawAllLayers(myMap, new GraphicsLayer[] { gPointLayer }, point);
21     GisMap.AddLayersToMap(myMap, new GraphicsLayer[] { gPointLayer });
22 }

好,看一下如何画圆吧。

01 /// <summary>
02 /// 在地图上绘制圆
03 /// </summary>
04 /// <param name="myMap">地图</param>
05 /// <param name="container">绘制容器</param>
06 /// <param name="pt">要绘制的点</param>
07 /// <param name="drawCircleLayer"></param>
08 /// <param name="circleKm">直径</param>
09 /// <param name="color">填充色</param>
10 /// <param name="ellipseStroke">边框色</param>
11 public void DrawEllipse(Map myMap, Canvas container, MapPoint pt,ref ElementLayer drawCircleLayer, doublecircleKm,Color color,Color ellipseStroke)
12 {
13     if (!drawCircleLayer.Children.Contains(container))
14     {
15         drawCircleLayer.Children.Add(container);
16         container.Opacity = 0.5;
17         container.SetValue(ElementLayer.EnvelopeProperty, new Envelope(myMap.Extent.XMax, myMap.Extent.YMax, myMap.Extent.XMin, myMap.Extent.YMin));
18     }
19  
20     Point ptFirst = myMap.MapToScreen(new MapPoint(Convert.ToDouble(pt.X),
21         Convert.ToDouble(pt.Y)));
22  
23     Point pt7 = myMap.MapToScreen(new MapPoint((Convert.ToDouble(pt.X) + circleKm * kmToEN),
24         Convert.ToDouble(pt.Y)));
25  
26     Ellipse ellipse7 = new Ellipse();
27     ellipse7.Width = (pt7.X - ptFirst.X) * 2;
28     ellipse7.Height = ellipse7.Width;
29     ellipse7.StrokeThickness = 1;
30     ellipse7.Stroke = new SolidColorBrush(ellipseStroke);
31     ellipse7.Fill = new SolidColorBrush(color);
32     Canvas.SetLeft(ellipse7, ptFirst.X - ellipse7.Width / 2);
33     Canvas.SetTop(ellipse7, ptFirst.Y - ellipse7.Width / 2);
34     ellipse7.Opacity = 0.5;
35  
36     container.Children.Add(ellipse7);
37     container.IsHitTestVisible = false;
38     container.SetValue(Canvas.ZIndexProperty, -10);
39 }

这是一个画圆的方法,需要地图类,点,Canvas容器,Gis 的地图层ElementLayer和color

我前台是这样调用的

/// <summary>
  /// 绘制7级风圈和10级风圈
  /// </summary>
  /// <param name="myMap"></param>
  /// <param name="sender"></param>
  public void DrawEllipse7And10WindCircle(Map myMap, object sender)
  {
                  if (GisMap.LayerExist(myMap, "WindCircleLayer"))           
 {                GisMap.DeleteLayersToMap(myMap, "WindCircleLayer");            }
 
            ElementLayer circleLayer = new ElementLayer();
            circleLayer.ID = "WindCircleLayer";
 
            Canvas circleCanvas = new Canvas();
 
            Graphic tipGraphic = sender as Graphic;
 
            if (Convert.ToDouble(tipGraphic.Attributes["WindCircle7"]) != 0)
            {
                Color color = new Color();
                color.A = 255;
                color.R = 153;
                color.G = 105;
                color.B = 192;
 
                DrawEllipse(myMap, circleCanvas, newMapPoint(Convert.ToDouble(tipGraphic.Attributes["Longitude"]),
                    Convert.ToDouble(tipGraphic.Attributes["Latitude"])), ref circleLayer,
                    Convert.ToDouble(300), color, Colors.Blue);
 
            }
 
            if (Convert.ToDouble(tipGraphic.Attributes["WindCircle10"]) != 0)
            {
                Color color = new Color();
                color.A = 255;
                color.R = 111;
                color.G = 91;
                color.B = 171;
 
                this.DrawEllipse(myMap, circleCanvas, newMapPoint(Convert.ToDouble(tipGraphic.Attributes["Longitude"]),
                    Convert.ToDouble(tipGraphic.Attributes["Latitude"])), ref circleLayer,
                    Convert.ToDouble(tipGraphic.Attributes["WindCircle10"]), color, Colors.Blue);
            }
 
 
            GisMap.AddLayersToMap(myMap, new ElementLayer[] { circleLayer });
        }

这里的sender是一个Gis元素 Graphic,根据我的WebService 取到的实体后我把这个点加上了Attributes,一系列属性,所以在上面的代码可以看到tipGraphic.Attributes["WindCircle10"],


下面的代码就是在我从WebService取到实体后做添加点的代码:

/// <summary>
/// 添加台风点代码
/// 添加鼠标移入、移出事件
/// </summary>
/// <param name="model"></param>
/// <param name="i"></param>
private void AddPointToGraphic(TyphoonModel model, int i, List<Graphic> pointParam)
{
    SimpleMarkerSymbol symbol = new SimpleMarkerSymbol();
    Color color = new Color();
    color.A = 255;
     
    if (Convert.ToDouble(model.WS) <= 17.1)
    {
        color.R = 0;
        color.G = 254;
        color.B = 223;
        symbol.Color = new SolidColorBrush(color);
    }
    else if (Convert.ToDouble(model.WS) > 17.1 && Convert.ToDouble(model.WS) <= 24.4)
    {
        color.R = 254;
        color.G = 243;
        color.B = 0;
        symbol.Color = new SolidColorBrush(color);
    }
    else if (Convert.ToDouble(model.WS) > 24.4 && Convert.ToDouble(model.WS) <= 32.6)
    {
        color.R = 254;
        color.G = 144;
        color.B = 44;
        symbol.Color = new SolidColorBrush(color);
    }
    else if (Convert.ToDouble(model.WS) > 32.6 && Convert.ToDouble(model.WS) <= 41.4)
    {
        color.R = 254;
        color.G = 4;
        color.B = 4; symbol.Color = new SolidColorBrush(color);
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试应用站用交流系统断
### 回答1: ArcGIS API for JS是一款面向Web开发者的地图API,它提供了丰富的API,帮助开发者构建自定义交互式地图应用程序。其中包括绘制线、面等功能。 绘制 使用ArcGIS API for JS绘制十分简单,在地图击鼠标左键即可绘制一个。每个都具有独立的坐标和属性信息,可以随时编辑修改。另外,开发者还可以通过API设置的图标、大小、颜色等样式,使得地图上更加醒目。 绘制线 绘制线ArcGIS API for JS的另一个常见功能,它可以通过鼠标在地图击左键进行绘制。开发者可以通过API设置线的颜色、宽度、描述信息等属性,从而将其与其他地图要素区分开来。此外,ArcGIS API for JS还支持绘制多段线,使得地图上的路线更加真实。 绘制绘制面是ArcGIS API for JS最强大的功能之一,它可以让开发者创建自己的多边形、形、矩形等形状。开发者可以自定义面的颜色、透明度、边框、填充等属性,从而轻松创建专业级别的地图要素。此外,API还支持多个面的合并、分割和编辑,使得地图要素更加丰富、灵活。 总之,ArcGIS API for JS提供了丰富的绘图功能,不仅可以帮助开发者快速创建自定义地图应用程序,还可以让地图更加真实、互动。感谢你的提问。 ### 回答2: ArcGIS API for JS是一款广泛使用的地理信息系统软件开发工具,它提供了许多用于绘制地图元素的功能和工具。其中,绘制线和面是GIS应用程序中不可或缺的功能之一。 绘制线和面的方法都可以通过使用ArcGIS API for JS中提供的绘制工具实现。绘图工具可以通过调用API中提供的函数来启用并配置,然后就可以使用鼠标在地图绘制所需图形。同时,API还提供了一系列函数用于处理网格、吸附、编辑和交互等操作,使绘制过程更加灵活、高效。 在ArcGIS API for JS中绘制非常简单,首先需要创建一个图形对象,然后指定该的坐标和样式。接着,将该对象添加到地图中即可。绘制线和面的方法与绘制类似,但需要传入更多的参数来指定线和面的形状、样式和颜色等属性。 总之,ArcGIS API for JS提供了丰富的图形绘制功能,能够轻松地绘制出各种类型的线和面,以满足GIS应用开发者的需求。具体实现方法可以参考API文档中提供的详细指南和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值