///画线

void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{

Button btn = sender as Button;
var geometry = btn.Tag as ESRI.ArcGIS.Client.Geometry.Polyline;
//存储线要素的集合
List<ESRI.ArcGIS.Client.Geometry.Polyline> polyLineListGrid = new List<ESRI.ArcGIS.Client.Geometry.Polyline>();
List<ESRI.ArcGIS.Client.Geometry.Polyline> polyLineListriver = new List<ESRI.ArcGIS.Client.Geometry.Polyline>();
polyLineListGrid.Add(geometry as ESRI.ArcGIS.Client.Geometry.Polyline);
geometryService.TrimExtendAsync(polyLineListGrid, CenterGraphic.Geometry as ESRI.ArcGIS.Client.Geometry.Polyline, CurveExtension.DefaultCurveExtension);
geometryService.TrimExtendCompleted += geometryService_TrimExtendCompleted;
}

///执行分析

void geometryService_TrimExtendCompleted(object sender, GraphicsEventArgs e)
{
MapPoint point = null;
foreach (Graphic g in e.Results)
{
if (g.Geometry.Extent != null)
{
glayer.Graphics.Clear();
layer.Graphics.Clear();
var pline = g.Geometry as ESRI.ArcGIS.Client.Geometry.Polyline;
//Graphic gg = new Graphic()
//{
// Geometry = pline,
// Symbol = new LoadMapResource().GetSymbolByKey("DrawObjectLineSymbol") as LineSymbol
//};
//glayer.Graphics.Add(gg);
var gline = CenterGraphic.Geometry as ESRI.ArcGIS.Client.Geometry.Polyline;
var len1 = GetMinDistance(gline.Paths[0][0], gline.Paths[0][gline.Paths[0].Count - 1], pline.Paths[0][0]);
var len2 = GetMinDistance(gline.Paths[0][0], gline.Paths[0][gline.Paths[0].Count - 1], pline.Paths[0][pline.Paths[0].Count - 1]);
if (len1 > len2)
{
point = CreateMapPoint(pline.Paths[0][pline.Paths[0].Count - 1].X, pline.Paths[0][pline.Paths[0].Count - 1].Y);
}
else
{
point = CreateMapPoint(pline.Paths[0][0].X, pline.Paths[0][0].Y);
}
AddPointGraphic(point);
}
}
}

//由X,Y构造一个点
public MapPoint CreateMapPoint(double x, double y)
{
return new MapPoint(x, y);
}
//将一个点添加到Layer中
public void AddPointGraphic(ESRI.ArcGIS.Client.Geometry.MapPoint point)
{
Graphic g = new Graphic()
{
Geometry = point,
Symbol = new LoadMapResource().GetSymbolByKey("DrawObjectPointSymbol") as MarkerSymbol,
};
glayer.Graphics.Add(g);

}

ArcGIS API for Silverlight 使用GeometryService求解线与线的交点的更多相关文章

  1. ArcGIS API for Silverlight 地图元素点闪烁,线流动显示的处理方式

    原文:ArcGIS API for Silverlight 地图元素点闪烁,线流动显示的处理方式 <Grid x:Name="LayoutRoot" Background=& ...

  2. ArcGIS API for Silverlight 点沿着线流动

    原文:ArcGIS API for Silverlight 点沿着线流动 概述 前段时间做了一个项目,要求是有一些电力输送线,电力输送线或者石油管道都是有流动方向的,用户想做一个动态效果来模拟电力的输 ...

  3. ArcGIS API for Silverlight开发入门

    你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...

  4. ArcGIS API for Silverlight实现地图测距功能

    原文:ArcGIS API for Silverlight实现地图测距功能 问题:如何实现地图测距功能? 地图工具栏 <Grid x:Name="gToolMenu" Hei ...

  5. 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注

    原文 http://blog.csdn.net/esricd/article/details/7587136 在ArcGIS API for Silverlight/WPF中原版的TextSymbol ...

  6. 使用ArcGIS API for Silverlight + Visifire绘制地图统计图

    原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释 ...

  7. 使用ArcGIS API for Silverlight实现地形坡度在线分析

    原文:使用ArcGIS API for Silverlight实现地形坡度在线分析 苦逼的研究生课程终于在今天结束了,也许从今以后再也不会坐在大学的课堂上正式的听老师讲课了,接下来的时间就得开始找工作 ...

  8. ArcGIS api fo silverlight学习一(silverlight加载GeoServer发布的WMS地图)

    最好的学习资料ArcGIS api fo silverlight官网:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm 一. ...

  9. ArcGIS API for Silverlight动态标绘的实现

    原文:ArcGIS API for Silverlight动态标绘的实现 1.下载2个dll文件,分别是: ArcGISPlotSilverlightAPI.dll 和 Matrix.dll 其下载地 ...

随机推荐

  1. 轻量级前端MVVM框架avalon - 整体架构

    官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面 ...

  2. 深入理解this机制系列第一篇——this的4种绑定规则

    × 目录 [1]默认绑定 [2]隐式绑定 [3]隐式丢失[4]显式绑定[5]new绑定[6]严格模式 前面的话 如果要问javascript中哪两个知识点容易混淆,作用域查询和this机制绝对名列前茅 ...

  3. 创建第一个 local network(II)- 每天5分钟玩转 OpenStack(81)

    上一节通过 Web GUI 创建了 “first_local_net”,本节我们需要搞清楚底层网络结构有了哪些变化? 点击 “first_local_net” 链接,显示 network 的 subn ...

  4. NFS Volume Provider(Part III) - 每天5分钟玩转 OpenStack(64)

    今天我们将前一小节创建的 NFS volume “nfs-vol-1” attach 到 instance “c2”上. 这里我们重点关注 nova-compute 如何将“nfs-vol-1” at ...

  5. iPhone 6/plus iOS Safari fieldset border 边框消失

    问题:iPhone6 plus 手机浏览网页,fieldset border 边框消失. 示例代码: <div> <fieldset style="border: 1px ...

  6. geotrellis使用(二十一)自动导入数据

    目录 前言 整体介绍 前台界面 后台控制 总结 一.前言        之前Geotrellis数据导入集群采用的是命令行的方式,即通过命令行提交spark任务来ingest数据,待数据导入完毕再启动 ...

  7. MongoDB的CRUD操作

    1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...

  8. 韩顺平_linux_随堂笔记

    这还是自己3年前(2011年)整理的笔记,记得当时那会儿自己对Linux还特别的憧憬,也很喜欢韩老师的讲课风格,边看边做笔记乐此不彼,现在开通了技术博客,所以把当年的笔记也放上来和大家分享.同时推荐没 ...

  9. 函数----Beginning Visual C#

    span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...

  10. Lucene教程

    一:简单的示例 1.1:生成索引 1.1.1:Field.Store和Field.Index 1.1.2:为数字生成索引 1.1.3:为索引加权 1.1.4:为日期生成索引 1.2:查询 1.2.1: ...