社区首页 >问答首页 >在MOUSE_MOVE事件后测量地图上线的长度

在MOUSE_MOVE事件后测量地图上线的长度
EN

Stack Overflow用户
提问于 2011-05-12 22:07:59
回答 1查看 366关注 0票数 2

用户可以使用ESRI Flex Viewer应用程序执行的操作之一是在地图上绘制形状(例如,一条线)。一旦用户完成了这条线的绘制,他们将双击触发DrawEvent.DRAW_END事件的鼠标。当它被触发时,使用对API函数geometryService.project([geometryObject], spatialReference);的调用来测量行。

我希望能够在MouseEvent.MOUSE_MOVE事件之后调用此函数,以便动态测量线条,而不仅仅是在DRAW_END事件之后。不幸的是,只有DrawEvent.DRAW_START和DrawEvent.DRAW_END这两个DrawEvents会被调度。这些ESRI类是已编译的类,所以我不能对它们进行任何更改。

有没有一种方法可以向MOUSE_MOVE事件添加一个eventListener,它可以捕获正在绘制的直线的当前几何形状,并调用我的API函数来动态测量?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-19 22:06:47

我找到了这个问题的解决方案,完全绕过了几何服务,并构建了自己的解决方案。有一个great site实现了Vincenty算法,用于测量两个坐标之间的距离。这是一个非常精确的近似算法(在Vincenty的地球椭球上的.5mm中),并且非常有效,因此可以频繁地使用(例如,在鼠标移动之后)。

以下是实现此功能的基本步骤:

  1. 将事件侦听器添加到地图,该事件侦听器侦听鼠标单击后的
  2. ,将屏幕上单击位置的坐标转换为地图坐标,并添加侦听器以观察鼠标移动事件
  3. 鼠标移动时,抓取鼠标的坐标(如步骤2中所示)并执行Vincenty计算。在地图上创建自定义工具提示,并将Vincenty结果添加到工具提示文本。
  4. 双击后,将结果发送到几何服务并从地图

中移除工具提示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5985057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文