加载面积计算函数时候出现这个错误

0 投票
VM57:1 Uncaught TypeError: Cannot read property 'events' of null
    at initialize.register (eval at <anonymous> (SuperMap-8.1.1-17729.js:3), <anonymous>:1:198048)
    at initialize.activate (eval at <anonymous> (SuperMap-8.1.1-17729.js:3), <anonymous>:1:197658)
    at initialize.activate (eval at <anonymous> (SuperMap-8.1.1-17729.js:3), <anonymous>:1:203876)
    at initialize.activate (eval at <anonymous> (SuperMap-8.1.1-17729.js:3), <anonymous>:1:243676)
    at areaMeasure (test8.js:26)
    at HTMLInputElement.onclick (test36.html:47)
6月 1, 2020 分类:  97次浏览 | 用户: Lynch (6 分)

1个回答

0 投票

您好,您这个这个报错可能是事件注册有问题,您那边可以贴下代码吗?

您可以参考https://iclient.supermap.io/web/libs/iclient8c/apidoc/files/SuperMap/Control/Measure-js.html这个例子

var map = new SuperMap.Map("map");
 //实例化 measureControls 控件,用于测量距离和面积
 measureControls = {
     //距离量算
     line:new SuperMap.Control.Measure(
         SuperMap.Handler.Path, {persist:true}
     ),
     //面积量算
     polygon:new SuperMap.Control.Measure(
         SuperMap.Handler.Polygon,{persist:true}
     )
 };
var control;
//监听 measure 和 measurepartial 两个事件,量算完成时触发时
//量算完成时触发 measure 事件,当点被添加到量算过程中时触发 measurepartial
for(var key in measureControls){
    control = measureControls[key];
    control.events.on({
        "measure": handleMeasure,
        "measurepartial": handleMeasurements
    });
//添加控件到 map 上
map.addControl(control);
}
//激活控件
control.activate();

//定义 handleMeasurements 函数,触发 measure 事件会调用此函数
//事件参数 event 包含了测量要素 geometry 信息
function handleMeasure(event) {
    //获取传入参数 event 的 geometry 信息
    var geometry = event.geometry;
    //TODO 具体操作方法用户可根据需要自行定义
}
//定义 handleMeasurements 函数,触发 measurepartial 事件会调用此函数
//事件参数 event 包含了测量要素 geometry 信息
function handleMeasurements(event) {
    //获取传入参数 event 的 geometry 信息
    var geometry = event.geometry;
    //获取传入参数 event 的 type 信息(click指示的是点击事件,move指示的是移动事件)
    var type=event.type;
    //TODO 具体操作方法用户可根据需要自行定义
}
6月 1, 2020 用户: 阳俊林 名扬四海 (3,344 分)
...