Skip to content

Commit 95bee9c

Browse files
【fix】 修复专题图removeFeatures destroyFeatures 删除单个要素不对 review by luox
1 parent 963c7d5 commit 95bee9c

File tree

17 files changed

+493
-43
lines changed

17 files changed

+493
-43
lines changed

src/leaflet/overlay/GraphThemeLayer.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ export var GraphThemeLayer = ThemeLayer.extend({
6969
/**
7070
* @function L.supermap.GraphThemeLayer.prototype.addFeatures
7171
* @description 向专题图图层中添加数据。
72-
* @param {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待添加的要素。
72+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待添加的要素。
7373
*/
7474
addFeatures: function (features) {
7575
var me = this;
7676
/**
7777
* @event L.supermap.GraphThemeLayer#beforefeaturesadded
7878
* @description 向专题图图层中添加数据之前触发。
79-
* @property {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待添加的要素。
79+
* @property {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待添加的要素。
8080
*/
8181
me.fire("beforefeaturesadded", {features: features});
8282

@@ -311,7 +311,7 @@ export var GraphThemeLayer = ThemeLayer.extend({
311311
/**
312312
* @function L.supermap.GraphThemeLayer.prototype.removeFeatures
313313
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素(数据)。
314-
* @param {(Array.<SuperMap.Feature.Vector>|Function)} features - 待删除的要素或用于过滤的回调函数
314+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 待删除的要素或用于条件删除的回调函数
315315
*/
316316
removeFeatures: function (features) { // eslint-disable-line no-unused-vars
317317
var me = this;

src/leaflet/overlay/LabelThemeLayer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export var LabelThemeLayer = GeoFeatureThemeLayer.extend({
149149
/**
150150
* @function L.supermap.LabelThemeLayer.prototype.removeFeatures
151151
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。参数中的 features 数组中的每一项,必须是已经添加到当前图层中的 feature。
152-
* @param {(Array.<SuperMap.Feature.Vector>|Function)} features - 要删除的要素或用于过滤的回调函数
152+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 要删除的要素或用于条件删除的回调函数
153153
*/
154154
removeFeatures: function (features) { // eslint-disable-line no-unused-vars
155155
this.labelFeatures = [];

src/leaflet/overlay/theme/GeoFeatureThemeLayer.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ export var GeoFeatureThemeLayer = ThemeLayer.extend({
6868
/**
6969
* @function L.supermap.GeoFeatureThemeLayer.prototype.addFeatures
7070
* @description 向专题图图层中添加数据。
71-
* @param {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待填加的要素。
71+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待填加的要素。
7272
*/
7373
addFeatures: function (features) {
7474
var me = this;
7575

7676
/**
7777
* @event L.supermap.GeoFeatureThemeLayer#beforefeaturesadded
7878
* @description 向专题图图层中添加数据之前触发。
79-
* @property {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 事件对象
79+
* @property {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 要素
8080
*/
8181
me.fire("beforefeaturesadded", {features: features});
8282

@@ -101,7 +101,7 @@ export var GeoFeatureThemeLayer = ThemeLayer.extend({
101101
/**
102102
* @function L.supermap.GeoFeatureThemeLayer.prototype.removeFeatures
103103
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。参数中的 features 数组中的每一项,必须是已经添加到当前图层中的 feature。
104-
* @param {(SuperMap.Feature.Vector|Function)} features - 要删除的要素或用于过滤的回调函数
104+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 要删除的要素或用于条件删除的回调函数
105105
*/
106106
removeFeatures: function (features) { // eslint-disable-line no-unused-vars
107107
this.clearCache();
@@ -192,6 +192,7 @@ export var GeoFeatureThemeLayer = ThemeLayer.extend({
192192
* @function L.supermap.GeoFeatureThemeLayer.prototype.createThematicFeature
193193
* @description 创建专题要素。
194194
* @param {SuperMap.Feature.Vector} feature - 要创建的要素。
195+
* @returns {Array.<SuperMap.Feature.Vector>} 返回矢量要素。
195196
*/
196197
createThematicFeature: function (feature) {
197198
var me = this;
@@ -275,6 +276,7 @@ export var GeoFeatureThemeLayer = ThemeLayer.extend({
275276
* @function L.supermap.GeoFeatureThemeLayer.prototype.getShapesByFeatureID
276277
* @description 通过 FeatureID 获取 feature 关联的所有图形。如果不传入此参数,函数将返回所有图形。
277278
* @param {number} featureID - 要素 ID。
279+
* @returns {Array} 返回图形数组
278280
*/
279281
getShapesByFeatureID: function (featureID) {
280282
var me = this,

src/leaflet/overlay/theme/ThemeLayer.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export var ThemeLayer = L.Layer.extend({
123123
/**
124124
* @function L.supermap.ThemeLayer.prototype.addFeatures
125125
* @description 向专题图图层中添加数据。
126-
* @param {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素
126+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待添加要素
127127
*/
128128
addFeatures: function (features) { // eslint-disable-line no-unused-vars
129129
//子类实现此方法
@@ -141,7 +141,7 @@ export var ThemeLayer = L.Layer.extend({
141141
/**
142142
* @function L.supermap.ThemeLayer.prototype.destroyFeatures
143143
* @description 销毁要素。
144-
* @param {Array.<SuperMap.Feature.Vector>} features - 将被销毁的要素。
144+
* @param {Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector} features - 将被销毁的要素。
145145
*/
146146
destroyFeatures: function (features) {
147147
if (features === undefined) {
@@ -151,6 +151,9 @@ export var ThemeLayer = L.Layer.extend({
151151
return;
152152
}
153153
this.removeFeatures(features);
154+
if (!Array.isArray(features)) {
155+
features = [features];
156+
}
154157
for (var i = features.length - 1; i >= 0; i--) {
155158
features[i].destroy();
156159
}
@@ -159,7 +162,7 @@ export var ThemeLayer = L.Layer.extend({
159162
/**
160163
* @function L.supermap.ThemeLayer.prototype.removeFeatures
161164
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。
162-
* @param {(Array.<SuperMap.Feature.Vector>|Function)} features - 将被删除的要素或用来过滤的回调函数。
165+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 将被删除的要素或用来过滤的回调函数。
163166
*/
164167
removeFeatures: function (features) {
165168
var me = this;
@@ -169,7 +172,7 @@ export var ThemeLayer = L.Layer.extend({
169172
if (features === me.features) {
170173
return me.removeAllFeatures();
171174
}
172-
if (!L.Util.isArray(features) && !typeof features === 'function') {
175+
if (!L.Util.isArray(features) && !(typeof features === 'function')) {
173176
features = [features];
174177
}
175178

@@ -214,7 +217,7 @@ export var ThemeLayer = L.Layer.extend({
214217
/**
215218
* @event L.supermap.ThemeLayer#featuresremoved
216219
* @description 删除的要素成功之后触发。
217-
* @property {Array.<SuperMap.Feature.Vector>} features - 事件对象
220+
* @property {Array.<SuperMap.Feature.Vector>} features - 删除失败的要素数组
218221
* @property {boolean} succeed - 要输是否删除成功,true 为删除成功,false 为删除失败。
219222
*/
220223
me.fire("featuresremoved", {
@@ -243,7 +246,7 @@ export var ThemeLayer = L.Layer.extend({
243246
* @function L.supermap.ThemeLayer.prototype.getFeatures
244247
* @description 查看当前图层中的有效数据。
245248
* @param {Function} [filter] - 根据条件过滤要素的回调函数。
246-
* @returns {Array} 返回图层中的有效数据
249+
* @returns {Array.<SuperMap.Feature.Vector>} 返回图层中的要素
247250
*/
248251
getFeatures: function (filter) {
249252
var len = this.features.length;
@@ -261,6 +264,7 @@ export var ThemeLayer = L.Layer.extend({
261264
* @description 在专题图的要素数组 features 里面遍历每一个 feature,当 feature[property] === value 时,返回此 feature(并且只返回第一个)。
262265
* @param {string} property - 要的某个属性名。
263266
* @param {string} value - 对应属性名得值。
267+
* @returns {Array.<SuperMap.Feature.Vector>} 返回图层中的要素。
264268
*/
265269
getFeatureBy: function (property, value) {
266270
var me = this;
@@ -279,6 +283,7 @@ export var ThemeLayer = L.Layer.extend({
279283
* @function L.supermap.ThemeLayer.prototype.getFeatureById
280284
* @description 通过给定一个 ID,返回对应的矢量要素,如果不存在则返回 null。
281285
* @param {number} featureId - 要素 ID。
286+
* @returns {Array.<SuperMap.Feature.Vector>} 返回图层中的要素。
282287
*/
283288
getFeatureById: function (featureId) {
284289
return this.getFeatureBy('id', featureId);
@@ -289,7 +294,7 @@ export var ThemeLayer = L.Layer.extend({
289294
* @description 通过给定一个属性的 key 值和 value 值,返回所有匹配的要素数组。
290295
* @param {string} attrName - key 值。
291296
* @param {string} attrValue - value 值。
292-
* @returns {Array} 返回所有匹配的要素数组。
297+
* @returns {Array.<SuperMap.Feature.Vector>} 返回所有匹配的要素数组。
293298
*/
294299
getFeaturesByAttribute: function (attrName, attrValue) {
295300
var me = this,
@@ -457,7 +462,7 @@ export var ThemeLayer = L.Layer.extend({
457462
/**
458463
* @function L.supermap.ThemeLayer.prototype.toiClientFeature
459464
* @description 转为 iClient 要素。
460-
* @param {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
465+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
461466
* @returns {Array.<SuperMap.Feature.Vector>} 转换后的 iClient 要素。
462467
*/
463468
toiClientFeature: function (features) {
@@ -493,7 +498,7 @@ export var ThemeLayer = L.Layer.extend({
493498
* @function L.supermap.ThemeLayer.prototype.toFeature
494499
* @deprecated
495500
* @description 转为 iClient 要素,该方法将被弃用,由 {@link L.supermap.ThemeLayer#toiClientFeature} 代替。
496-
* @param {(SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
501+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
497502
* @returns {SuperMap.Feature.Vector} 转换后的 iClient 要素。
498503
*/
499504
toFeature: function (features) {

src/mapboxgl/overlay/GraphThemeLayer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ export class Graph extends Theme {
368368
/**
369369
* @function mapboxgl.supermap.GraphThemeLayer.prototype.removeFeatures
370370
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。参数中的 features 数组中的每一项,必须是已经添加到当前图层中的 feature。
371-
* @param {SuperMap.Feature.Vector} features - 要删除的要素。
371+
* @param {Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function} features - 要删除的要素。
372372
*/
373373
removeFeatures(features) {
374374
this.clearCache();

src/mapboxgl/overlay/HeatMapLayer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ export class HeatMapLayer extends mapboxgl.Evented {
535535
/**
536536
* @function mapboxgl.supermap.HeatMapLayer.prototype.removeFeatures
537537
* @description 移除指定的热点信息。
538-
* @param {Array.<SuperMap.Feature.Vector>} features - 热点信息数组。
538+
* @param {Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector} features - 热点信息数组。
539539
*/
540540
removeFeatures(features) {
541541
if (!features || features.length === 0 || !this.features || this.features.length === 0) {

src/mapboxgl/overlay/LabelThemeLayer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export class Label extends GeoFeature {
128128
/**
129129
* @function mapboxgl.supermap.LabelThemeLayer.prototype.removeFeatures
130130
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。
131-
* @param {(SuperMap.Feature.Vector|Function)} features - 要删除的要素对象或用于过滤的回调函数。
131+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 要删除的要素对象或用于过滤的回调函数。
132132
*/
133133
removeFeatures(features) { // eslint-disable-line no-unused-vars
134134
this.labelFeatures = [];

src/mapboxgl/overlay/theme/GeoFeatureThemeLayer.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export class GeoFeature extends Theme {
205205
* @function mapboxgl.supermap.GeoFeatureThemeLayer.prototype.createThematicFeature
206206
* @description 创建专题要素。
207207
* @param {SuperMap.Feature.Vector} feature - 要素对象。
208+
* @returns {Array.<SuperMap.Feature.Vector>} 返回矢量要素
208209
*/
209210
createThematicFeature(feature) {
210211
var style = Util.copyAttributesWithClip(this.style);
@@ -272,6 +273,7 @@ export class GeoFeature extends Theme {
272273
* @function mapboxgl.supermap.GeoFeatureThemeLayer.prototype.setMaxCacheCount
273274
* @param {number} [featureID=si.refDataID] - 要素 ID。
274275
* @description 通过 FeatureID 获取 feature 关联的所有图形。如果不传入此参数,函数将返回所有图形。
276+
* @returns {Array} 返回图形数组
275277
*/
276278
getShapesByFeatureID(featureID) {
277279
var list = [];

src/mapboxgl/overlay/theme/ThemeLayer.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,19 @@ export class Theme {
139139

140140
/**
141141
* @function mapboxgl.supermap.ThemeLayer.prototype.destroyFeatures
142-
* @description 销毁某个要素
143-
* @param {SuperMap.Feature.Vector} features - 将被销毁的要素。
142+
* @description 销毁要素
143+
* @param {Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector} features - 将被销毁的要素。
144144
*/
145145
destroyFeatures(features) {
146-
var all = (features == undefined);
146+
var all = (features === undefined);
147147
if (all) {
148148
features = this.features;
149149
}
150150
if (features) {
151151
this.removeFeatures(features);
152+
if (!Array.isArray(features)) {
153+
features = [features];
154+
}
152155
for (var i = features.length - 1; i >= 0; i--) {
153156
features[i].destroy();
154157
}
@@ -212,7 +215,7 @@ export class Theme {
212215

213216
/**
214217
* @function mapboxgl.supermap.ThemeLayer.prototype.removeFeatures
215-
* @param {(Array.<SuperMap.Feature.Vector>|Function)} features - 要删除 feature 的数组或用来过滤的回调函数。
218+
* @param {(Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function)} features - 要删除 feature 的数组或用来过滤的回调函数。
216219
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。
217220
* 参数中的 features 数组中的每一项,必须是已经添加到当前图层中的 feature,
218221
* 如果无法确定 feature 数组,则可以调用 removeAllFeatures 来删除所有 feature。
@@ -227,7 +230,7 @@ export class Theme {
227230
if (features === me.features) {
228231
return me.removeAllFeatures();
229232
}
230-
if (!CommonUtil.isArray(features) && !typeof features === 'function') {
233+
if (!CommonUtil.isArray(features) && !(typeof features === 'function')) {
231234
features = [features];
232235
}
233236

@@ -282,14 +285,20 @@ export class Theme {
282285
this.renderer.clear();
283286
}
284287
this.features = [];
288+
/**
289+
* @event mapboxgl.supermap.ThemeLayer#featuresremoved
290+
* @description 要素删除之后触发。
291+
* @property {Array.<SuperMap.Feature.Vector>} features - 未被成功删除的要素。
292+
* @property {boolean} succeed - 删除成功与否。
293+
*/
285294
mapboxgl.Evented.prototype.fire('featuresremoved', {features: [], succeed: true});
286295
}
287296

288297
/**
289298
* @function mapboxgl.supermap.ThemeLayer.prototype.getFeatures
290299
* @description 查看当前图层中的有效数据。
291300
* @param {Function} [filter] - 根据条件过滤要素的回调函数。
292-
* @returns {SuperMap.Feature.Vector} 用户加入图层的有效数据。
301+
* @returns {Array.<SuperMap.Feature.Vector>} 用户加入图层的有效数据。
293302
*/
294303
getFeatures(filter) {
295304
var len = this.features.length;
@@ -411,6 +420,7 @@ export class Theme {
411420
* @function mapboxgl.supermap.ThemeLayer.prototype.getLocalXY
412421
* @description 地理坐标转为像素坐标。
413422
* @param {Object} [coordinate] - 坐标位置。
423+
* @returns {Array} 像素坐标数组。
414424
*/
415425
getLocalXY(coordinate) {
416426
var pixelP, map = this.map;
@@ -428,8 +438,8 @@ export class Theme {
428438
/**
429439
* @function mapboxgl.supermap.ThemeLayer.prototype.toFeature
430440
* @description 转为 iClient 要素。
431-
* @param {mapboxgl.supermap.ThemeFeature|GeoJSONObject} features - 待转要素。
432-
* @returns {SuperMap.Feature.Vector} 转换后的 iClient 要素。
441+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
442+
* @returns {Array.<SuperMap.Feature.Vector>} 转换后的 iClient 要素。
433443
*/
434444
toiClientFeature(features) {
435445
if (!CommonUtil.isArray(features)) {
@@ -463,7 +473,7 @@ export class Theme {
463473
* @function mapboxgl.supermap.ThemeLayer.prototype.toFeature
464474
* @deprecated
465475
* @description 转为 iClient 要素,该方法将被弃用,由 {@link mapboxgl.supermap.ThemeLayer#toiClientFeature} 代替。
466-
* @param {mapboxgl.supermap.ThemeFeature|GeoJSONObject} features - 待转要素。
476+
* @param {(Array.<SuperMap.ServerFeature>|Array.<L.supermap.themeFeature>|Array.<GeoJSONObject>|SuperMap.ServerFeature|L.supermap.themeFeature|GeoJSONObject)} features - 待转要素。
467477
* @returns {SuperMap.Feature.Vector} 转换后的 iClient 要素。
468478
*/
469479
toFeature(features) {

src/openlayers/overlay/Graph.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ export class Graph extends Theme {
387387
/**
388388
* @function ol.source.Graph.prototype.removeFeatures
389389
* @description 从专题图中删除 feature。这个函数删除所有传递进来的矢量要素。参数中的 features 数组中的每一项,必须是已经添加到当前图层中的 feature。
390-
* @param {SuperMap.Feature.Vector} features - 要删除的要素。
390+
* @param {Array.<SuperMap.Feature.Vector>|SuperMap.Feature.Vector|Function} features - 要删除的要素。
391391
*/
392392
removeFeatures(features) {
393393
this.clearCache();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy