如何覆盖js方法?

时间:2021-02-16 11:43:15

标签: javascript javascript-objects mapbox mapbox-gl-js mapbox-gl-draw

我想在 mapbox/mapbox-gl-draw 的 DrawLineString 方法中添加一些自定义功能 Clear-AzContext

我可以通过 Draw.constructor.modes.draw_line_string.toDisplayFeatures 访问这个函数

  var Draw = new MapboxDraw({
        controls: {
            // point, line_string: true, polygon, trash, combine_features and uncombine_features
            line_string: true,
            trash: true
        },
        displayControlsDefault: false
    });

    console.log('f',Draw.constructor.modes.draw_line_string.toDisplayFeatures);

有没有什么简单的方法可以在不修改源文件的情况下用我的代码更新这个函数? 谢谢

更新: 当我尝试使用这个方法时,我得到了createVertex is undefined,即使我将此函数复制到 main.js 绘图工具的功能也被破坏了

 MapboxDraw.modes.draw_line_string.toDisplayFeatures = function (state, geojson, display) {
        const isActiveLine = geojson.properties.id === state.line.id;
        geojson.properties.active = (isActiveLine) ? true : false;
        if (!isActiveLine) return display(geojson);
        // Only render the line if it has at least one real coordinate
        if (geojson.geometry.coordinates.length < 2) return;
        geojson.properties.meta = 'feature';
        display(createVertex(
            state.line.id,
            geojson.geometry.coordinates[state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1],
            `${state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1}`,
            false
        ));
        display(geojson);
        //console.log('geojson', geojson);
    };

0 个答案:

没有答案
相关问题