Fewer type casts, minor changes

This commit is contained in:
Tim Schaub
2019-09-26 09:48:23 +02:00
parent 1e93ede0b2
commit 6ec69abdf6

View File

@@ -267,8 +267,7 @@ class Modify extends PointerInteraction {
useSpatialIndex: false,
wrapX: !!options.wrapX
}),
style: options.style ? options.style :
getDefaultStyleFunction(),
style: options.style ? options.style : getDefaultStyleFunction(),
updateWhileAnimating: true,
updateWhileInteracting: true
});
@@ -279,15 +278,15 @@ class Modify extends PointerInteraction {
* @type {!Object<string, function(Feature, import("../geom/Geometry.js").default): void>}
*/
this.SEGMENT_WRITERS_ = {
'Point': this.writePointGeometry_,
'LineString': this.writeLineStringGeometry_,
'LinearRing': this.writeLineStringGeometry_,
'Polygon': this.writePolygonGeometry_,
'MultiPoint': this.writeMultiPointGeometry_,
'MultiLineString': this.writeMultiLineStringGeometry_,
'MultiPolygon': this.writeMultiPolygonGeometry_,
'Circle': this.writeCircleGeometry_,
'GeometryCollection': this.writeGeometryCollectionGeometry_
'Point': this.writePointGeometry_.bind(this),
'LineString': this.writeLineStringGeometry_.bind(this),
'LinearRing': this.writeLineStringGeometry_.bind(this),
'Polygon': this.writePolygonGeometry_.bind(this),
'MultiPoint': this.writeMultiPointGeometry_.bind(this),
'MultiLineString': this.writeMultiLineStringGeometry_.bind(this),
'MultiPolygon': this.writeMultiPolygonGeometry_.bind(this),
'Circle': this.writeCircleGeometry_.bind(this),
'GeometryCollection': this.writeGeometryCollectionGeometry_.bind(this)
};
@@ -334,8 +333,11 @@ class Modify extends PointerInteraction {
*/
addFeature_(feature) {
const geometry = feature.getGeometry();
if (geometry && geometry.getType() in this.SEGMENT_WRITERS_) {
this.SEGMENT_WRITERS_[geometry.getType()].call(this, feature, geometry);
if (geometry) {
const writer = this.SEGMENT_WRITERS_[geometry.getType()];
if (writer) {
writer(feature, geometry);
}
}
const map = this.getMap();
if (map && map.isRendered() && this.getActive()) {
@@ -351,8 +353,7 @@ class Modify extends PointerInteraction {
willModifyFeatures_(evt) {
if (!this.modified_) {
this.modified_ = true;
this.dispatchEvent(new ModifyEvent(
ModifyEventType.MODIFYSTART, this.features_, evt));
this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYSTART, this.features_, evt));
}
}
@@ -362,8 +363,7 @@ class Modify extends PointerInteraction {
*/
removeFeature_(feature) {
this.removeFeatureSegmentData_(feature);
// Remove the vertex feature if the collection of canditate features
// is empty.
// Remove the vertex feature if the collection of canditate features is empty.
if (this.vertexFeature_ && this.features_.getLength() === 0) {
this.overlay_.getSource().removeFeature(this.vertexFeature_);
this.vertexFeature_ = null;
@@ -377,7 +377,8 @@ class Modify extends PointerInteraction {
*/
removeFeatureSegmentData_(feature) {
const rBush = this.rBush_;
const /** @type {Array<SegmentData>} */ nodesToRemove = [];
/** @type {Array<SegmentData>} */
const nodesToRemove = [];
rBush.forEach(
/**
* @param {SegmentData} node RTree node.
@@ -482,11 +483,14 @@ class Modify extends PointerInteraction {
*/
writePointGeometry_(feature, geometry) {
const coordinates = geometry.getCoordinates();
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
segment: [coordinates, coordinates]
});
};
this.rBush_.insert(geometry.getExtent(), segmentData);
}
@@ -499,13 +503,16 @@ class Modify extends PointerInteraction {
const points = geometry.getCoordinates();
for (let i = 0, ii = points.length; i < ii; ++i) {
const coordinates = points[i];
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
depth: [i],
index: i,
segment: [coordinates, coordinates]
});
};
this.rBush_.insert(geometry.getExtent(), segmentData);
}
}
@@ -519,12 +526,15 @@ class Modify extends PointerInteraction {
const coordinates = geometry.getCoordinates();
for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {
const segment = coordinates.slice(i, i + 2);
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
index: i,
segment: segment
});
};
this.rBush_.insert(boundingExtent(segment), segmentData);
}
}
@@ -540,13 +550,16 @@ class Modify extends PointerInteraction {
const coordinates = lines[j];
for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {
const segment = coordinates.slice(i, i + 2);
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
depth: [j],
index: i,
segment: segment
});
};
this.rBush_.insert(boundingExtent(segment), segmentData);
}
}
@@ -563,13 +576,16 @@ class Modify extends PointerInteraction {
const coordinates = rings[j];
for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {
const segment = coordinates.slice(i, i + 2);
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
depth: [j],
index: i,
segment: segment
});
};
this.rBush_.insert(boundingExtent(segment), segmentData);
}
}
@@ -588,13 +604,16 @@ class Modify extends PointerInteraction {
const coordinates = rings[j];
for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {
const segment = coordinates.slice(i, i + 2);
const segmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const segmentData = {
feature: feature,
geometry: geometry,
depth: [j, k],
index: i,
segment: segment
});
};
this.rBush_.insert(boundingExtent(segment), segmentData);
}
}
@@ -614,18 +633,23 @@ class Modify extends PointerInteraction {
*/
writeCircleGeometry_(feature, geometry) {
const coordinates = geometry.getCenter();
const centerSegmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const centerSegmentData = {
feature: feature,
geometry: geometry,
index: CIRCLE_CENTER_INDEX,
segment: [coordinates, coordinates]
});
const circumferenceSegmentData = /** @type {SegmentData} */ ({
};
/** @type {SegmentData} */
const circumferenceSegmentData = {
feature: feature,
geometry: geometry,
index: CIRCLE_CIRCUMFERENCE_INDEX,
segment: [coordinates, coordinates]
});
};
const featureSegments = [centerSegmentData, circumferenceSegmentData];
centerSegmentData.featureSegments = circumferenceSegmentData.featureSegments = featureSegments;
this.rBush_.insert(createOrUpdateFromCoordinate(coordinates), centerSegmentData);
@@ -640,7 +664,9 @@ class Modify extends PointerInteraction {
writeGeometryCollectionGeometry_(feature, geometry) {
const geometries = geometry.getGeometriesArray();
for (let i = 0; i < geometries.length; ++i) {
this.SEGMENT_WRITERS_[geometries[i].getType()].call(this, feature, geometries[i]);
const geometry = geometries[i];
const writer = this.SEGMENT_WRITERS_[geometry.getType()];
writer(feature, geometry);
}
}
@@ -955,7 +981,7 @@ class Modify extends PointerInteraction {
const feature = segmentData.feature;
const geometry = segmentData.geometry;
const depth = segmentData.depth;
const index = /** @type {number} */ (segmentData.index);
const index = segmentData.index;
let coordinates;
while (vertex.length < geometry.getStride()) {
@@ -987,24 +1013,28 @@ class Modify extends PointerInteraction {
const rTree = this.rBush_;
rTree.remove(segmentData);
this.updateSegmentIndices_(geometry, index, depth, 1);
const newSegmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const newSegmentData = {
segment: [segment[0], vertex],
feature: feature,
geometry: geometry,
depth: depth,
index: index
});
rTree.insert(boundingExtent(newSegmentData.segment),
newSegmentData);
};
rTree.insert(boundingExtent(newSegmentData.segment), newSegmentData);
this.dragSegments_.push([newSegmentData, 1]);
const newSegmentData2 = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const newSegmentData2 = {
segment: [vertex, segment[1]],
feature: feature,
geometry: geometry,
depth: depth,
index: index + 1
});
};
rTree.insert(boundingExtent(newSegmentData2.segment), newSegmentData2);
this.dragSegments_.push([newSegmentData2, 0]);
this.ignoreNextSingleClick_ = true;
@@ -1123,15 +1153,17 @@ class Modify extends PointerInteraction {
segments.push(right.segment[1]);
}
if (left !== undefined && right !== undefined) {
const newSegmentData = /** @type {SegmentData} */ ({
/** @type {SegmentData} */
const newSegmentData = {
depth: segmentData.depth,
feature: segmentData.feature,
geometry: segmentData.geometry,
index: newIndex,
segment: segments
});
this.rBush_.insert(boundingExtent(newSegmentData.segment),
newSegmentData);
};
this.rBush_.insert(boundingExtent(newSegmentData.segment), newSegmentData);
}
this.updateSegmentIndices_(geometry, index, segmentData.depth, -1);
if (this.vertexFeature_) {