测量面积的鼠标回调函数里面的点在右键结束测量时鼠标移动和不移动的点信息不一样

0 投票
我想在右键结束的时候取到地图上左键确定的点信息,但是在右键结束的时候如果鼠标移动了监听函数里面回调的positions会添加上最后的那个点,如果我在最后一个点的位置直接点击左键选中右键结束则回调的positions只有左键的那几个点,怎么让回调函数只有那几个点的信息
11月 25, 2020 分类:  66次浏览 | 用户: zaq5759583 (2 分)

1个回答

0 投票

请问你使用的是哪个框架呢,是否方便发一下关键性代码。测量面积的接口可以使用封装好的接口,可以参考https://iclient.supermap.io/examples/openlayers/editor.html#01_measure_area

11月 25, 2020 用户: 张亮 名扬四海 (2,283 分)

用的WebGL的量算,http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#measureHandler

下面的measureEvt.addEventListene里面的positions

//初始化测量面积
            handlerArea = new Cesium.MeasureHandler(viewer, Cesium.MeasureMode.Area, clampMode);
            handlerArea.measureEvt.addEventListener(function (result) {
                var mj = Number(result.area);
                var selOptV = $("#selOpt").val();
                var positions = result.positions;
                if (selOptV == 3 || selOptV == 4) {
                    mj = Number(calcClampValue(positions));
                } else if (selOptV == 5) {
                    mj = Number(calcAreaWithoutHeight(positions));
                }

                var area = mj > 1000000 ? (mj / 1000000).toFixed(2) + 'km²' : mj.toFixed(2) + '㎡'
                handlerArea.areaLabel.text = '面积:' + area;
            });
            handlerArea.activeEvt.addEventListener(function (isActive) {
                if (isActive == true) {
                    viewer.enableCursorStyle = false;
                    viewer._element.style.cursor = '';
                    $('body').removeClass('measureCur').addClass('measureCur');
                }
                else {
                    viewer.enableCursorStyle = true;
                    $('body').removeClass('measureCur');
                }
            });

...