用户可以使用ESRI Flex Viewer应用程序执行的操作之一是在地图上绘制形状(例如一条线)。用户完成绘制线后,双击鼠标即可触发DrawEvent.DRAW_END事件。触发此操作时,将使用对API函数geometryService.project([geometryObject], spatialReference);
的调用来测量该行。
我希望能够在MouseEvent.MOUSE_MOVE事件之后调用此函数,以便动态测量行,而不是仅在DRAW_END事件之后。不幸的是,调度的唯一两个DrawEvent是DrawEvent.DRAW_START和DrawEvent.DRAW_END。这些ESRI类是编译类,因此我无法对它们进行任何更改。
有没有办法将一个eventListener添加到一个MOUSE_MOVE事件中,该事件可以获取正在绘制的行的当前几何图形并调用我的API函数来动态测量?
提前致谢。
答案 0 :(得分:0)
我通过完全绕开几何服务并构建自己的解决方案找到了解决这个问题的方法。有great site实现Vincenty算法来测量两个坐标之间的距离。这是一种非常精确的近似算法(在Vincenty的地球椭球上的.5mm范围内),并且非常有效,因此可以经常使用(例如在鼠标移动后)。
以下是实现此目的的基本步骤: