测量功能在官方给的例子里面是有参考示例的,在iobject\SampleCode\Mapping\MeasureMap中,效果如下:
but,我们工作中通常想要的效果可能、应该、或许、但是 是下面这样的:
中间结果可以在过程中显示在地图上,而且官方示例在测量结束(鼠标右键)时,图上的图形也会跟着消失,通常的使用场景我们仍然是希望结果能暂时保留在地图上,除了人为释放,那么该如何去实现这个效果呢。
在API中有一个TrackingLayer类,在执行SuperMap.UI.Action.CreatePolyline等绘制操作中,都是默认在该图层上进行操作,其结果并不直接记录于数据源上,同时,在该类下还有这add、remove等功能可供添加几何:
MapControl.Map.TrackingLayer.Add
MapControl.Map.TrackingLayer.Remove
那么有了这么一个类在看下对应的事件,是否能满足我们的需求。
以下是在示例(iobject\SampleCode\Mapping\ManualEdit)中找到的相关事件:
mapControl.Tracked //对应跟踪结束事件
mapControl.PointInputed //对应跟踪过程中鼠标左键点击事件
mapControl.Tracking //对应绘制过程中不断创建Geometry的事件;
在这个对应的事件中,可以获取到动态的几何长度、面积等信息。
那么有了这几个事件就可以完成我们的功能,思路如下:
按照这个想法,最终我们就可以仿造实现相应的测量效果了:
打完收工。