Advertisement

在ArcEngine中运用INewLineFeedback进行准确的距离和面积测量的方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍如何利用ArcEngine中的INewLineFeedback接口实现精确距离与面积测量的技术细节及操作步骤。 最近有客户来电反映,在使用我们的软件进行距离测量功能时无法平移地图的问题。我们所开发的软件是基于ArcEngine平台创建的,并且在网上的搜索结果中发现,大部分关于“arcengine 距离测量”的文章或代码都采用了INewLineFeedback来实现该功能。 具体来说,我们的软件也使用了这种方法:编写一个距离测量工具类继承自BaseTool,在这个类里通过调用INewLineFeedback动态绘制多段折线,并最终将其转化为Element添加到地图上。为了增加平移的功能,我们参照ArcMap的做法在鼠标中键按下、移动和释放等事件中加入相应的判断语句来实现PanStart、PanMoveTo以及PanStop操作。 然而,在引入了这些改动后,发现了一个新的问题:一旦用户开始使用鼠标的中间按钮进行地图的拖动(即平移),之前通过INewLineFeedback绘制出的距离测量线会变得混乱甚至部分丢失。进一步测试还发现了另一个意外的问题——在绘图的过程中如果切换到其他应用程序再返回时,软件会在原有基础上多画一条新的折线。 为了解决这些问题,我们检查了ArcMap自带的量测工具,并没有发现同样的问题出现。于是怀疑是否是我们的代码实现方法有误?在网上找到的一些类似代码也存在相同的bug现象,而官方文档中并没有对INewLineFeedback的具体使用细节作出特别说明或警告信息。 起初考虑用GDI来解决这个问题,但后来注意到INewLineFeedback类里有一个Refresh函数可以用来更新显示。经过尝试,在ArcEngine的多个事件回调方法(如OnAfterDraw、OnViewRefresh等)中调用了这个刷新功能后发现,在OnAfterScreenDraw这一特定时刻使用它能够有效解决问题。 综上所述,通过在绘制距离测量线的过程中适时地调用INewLineFeedback类中的Refresh函数,并将其放置于ArcEngine的事件序列中的合适位置(如OnAfterScreenDraw),可以解决因地图平移而导致的距离线条混乱丢失以及窗口切换后多出额外折线的问题。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • ArcEngineINewLineFeedback
    优质
    本文介绍如何利用ArcEngine中的INewLineFeedback接口实现精确距离与面积测量的技术细节及操作步骤。 最近有客户来电反映,在使用我们的软件进行距离测量功能时无法平移地图的问题。我们所开发的软件是基于ArcEngine平台创建的,并且在网上的搜索结果中发现,大部分关于“arcengine 距离测量”的文章或代码都采用了INewLineFeedback来实现该功能。 具体来说,我们的软件也使用了这种方法:编写一个距离测量工具类继承自BaseTool,在这个类里通过调用INewLineFeedback动态绘制多段折线,并最终将其转化为Element添加到地图上。为了增加平移的功能,我们参照ArcMap的做法在鼠标中键按下、移动和释放等事件中加入相应的判断语句来实现PanStart、PanMoveTo以及PanStop操作。 然而,在引入了这些改动后,发现了一个新的问题:一旦用户开始使用鼠标的中间按钮进行地图的拖动(即平移),之前通过INewLineFeedback绘制出的距离测量线会变得混乱甚至部分丢失。进一步测试还发现了另一个意外的问题——在绘图的过程中如果切换到其他应用程序再返回时,软件会在原有基础上多画一条新的折线。 为了解决这些问题,我们检查了ArcMap自带的量测工具,并没有发现同样的问题出现。于是怀疑是否是我们的代码实现方法有误?在网上找到的一些类似代码也存在相同的bug现象,而官方文档中并没有对INewLineFeedback的具体使用细节作出特别说明或警告信息。 起初考虑用GDI来解决这个问题,但后来注意到INewLineFeedback类里有一个Refresh函数可以用来更新显示。经过尝试,在ArcEngine的多个事件回调方法(如OnAfterDraw、OnViewRefresh等)中调用了这个刷新功能后发现,在OnAfterScreenDraw这一特定时刻使用它能够有效解决问题。 综上所述,通过在绘制距离测量线的过程中适时地调用INewLineFeedback类中的Refresh函数,并将其放置于ArcEngine的事件序列中的合适位置(如OnAfterScreenDraw),可以解决因地图平移而导致的距离线条混乱丢失以及窗口切换后多出额外折线的问题。
  • ArcGIS JS API实现探讨
    优质
    本文深入探讨了使用ArcGIS JavaScript API进行地图上的距离与面积测量的方法,旨在为开发者提供实用的技术指导和优化建议。 基于ArcGIS JS API实现的两种距离和面积测量方式包括封装好的类文件、测试页面以及资源文件等内容。
  • Cesium 工具
    优质
    Cesium距离和面积测量工具是一款基于Cesium地图引擎开发的应用插件,能够帮助用户在三维地球环境中便捷地进行直线、多边形等对象的距离及面积计算。 代码直接写在HTML文件中,打开即可使用。通过三个按键分别实现距离测量、面积测量以及清除功能。进行距离或面积测量时,左键添加点,右键结束添加操作,系统会自动计算并显示相应的距离或者面积;点击“清除”按钮后可以移除所有已绘制的点要素和线要素,并清空之前显示的距离和面积数值。
  • OpenLayers工具
    优质
    简介:OpenLayers距离和面积测量工具是一款用于地理信息系统中的实用插件,它允许用户在地图上直接量测两个点之间的距离或多个点围成区域的面积。该功能极大地便利了空间数据的分析与操作。 OpenLayers 提供了测距功能,包括直线测距和区域面积计算。
  • OpenLayers工具
    优质
    简介:OpenLayers距离和面积测量工具是一款基于开源地图库OpenLayers开发的功能插件,允许用户在地图上直接测量两点间的距离或区域的面积。该工具操作简便、精度高,广泛应用于地理信息分析与规划领域。 在OpenLayers中可以进行测距操作,包括直线测距和计算区域面积。
  • 使ArcGIS API for JS完整代码示例
    优质
    本示例提供了一套完整的使用ArcGIS API for JavaScript进行地图上距离与面积测量的代码,适合开发者参考学习。 除了距离测量之外,面积测量还包括全图显示、拉框放大等功能。无论画面是放大还是缩小,所测得的面积和距离都不会发生变化。
  • Python
    优质
    本文章介绍了在Python中实现计算两点之间距离的各种方法,包括使用数学公式、几何库以及向量运算等多种实用技术。 本段落详细介绍了Python中的距离测量方法,可供参考。有兴趣的读者可以查阅相关资料进一步了解。
  • ArcGIS JS长度探讨
    优质
    本文将深入探讨如何运用ArcGIS JavaScript API进行地图上要素的长度与面积测量,提供详细的操作步骤及代码示例。 本段落列出了在ArcGIS JS中对长度和面积测量方法的改进与扩展,详情请参阅我的博客文章。
  • ArcGIS for Android (手动与自动)
    优质
    本简介介绍了如何在ArcGIS for Android平台上进行距离和面积的手动及自动测量方法,适用于地图开发者和地理信息系统用户。 ArcGIS for Android支持手动测量距离和面积,并能自动记录轨迹以计算行走的距离和覆盖的面积。
  • 自定义工具ArcGIS API for JavaScript 4.14实现(含,附源码)
    优质
    本文详细介绍如何使用ArcGIS API for JavaScript 4.14开发定制化的地图测量工具,涵盖距离与面积测量功能,并提供完整代码示例。 ArcGIS API for JavaScript 4.14 自定义测量工具附源码(利用API提供的草图绘制工具进行测量,展示风格仿照百度地图的测量工具)。