javascript - 如何覆盖js方法?
问题描述
我想在 mapbox/mapbox-gl-draw https://github.com/mapbox/mapbox-gl-draw/blob/main/src/modes/draw_line_string.js的 DrawLineString 方法中添加一些自定义功能
我可以使用 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);
有没有什么简单的方法可以在不修改源文件的情况下用我的代码更新这个函数?谢谢
UPD:当我尝试使用这种方法时,我得到了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);
};
解决方案
推荐阅读
- jquery - Kartik Multidate DatePicker 和 beforeShowDay 在 Yii2 中使用 AJAX
- c++ - C++17十六进制浮点文字单精度后缀冲突?
- django - Django代理模型:父类访问子类方法
- css - 在组件的内部元素中而不是在选择器本身上设置类
- r - 在ggridges中绘制两个分类向量
- dockerfile - 如果我的 Docker Image 是 Intel 还是 Arm,我可以通知 QNAP
- javascript - React - Redux App:在无状态组件中处理事件
- swift - 我希望滑动删除仅适用于案例:0 而不是案例:1 - 分段控制
- java - 使用java中的方法从字符串中删除字符
- r - 用 0 替换向量中的值,除了样本和循环这个