Skip to content

Commit

Permalink
fix(vector): normalize feature geometry to input geometry
Browse files Browse the repository at this point in the history
  • Loading branch information
wallw-teal committed Apr 11, 2019
1 parent 8972238 commit c1040a5
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/os/source/vectorsource.js
Original file line number Diff line number Diff line change
Expand Up @@ -2852,6 +2852,11 @@ os.source.Vector.prototype.getFeaturesInGeometry = function(geometry, opt_featur
*/
os.source.Vector.prototype.isGeometryInArea_ = function(area, geometry, opt_rectangular) {
var match = false;
var proj = os.map.PROJECTION;
var wrap = proj.canWrapX() && this.getWrapX();
var projExtent = proj.getExtent();
var halfWidth = (projExtent[2] - projExtent[0]) / 2;

var geomType = geometry.getType();
switch (geomType) {
case ol.geom.GeometryType.GEOMETRY_COLLECTION:
Expand Down Expand Up @@ -2901,6 +2906,8 @@ os.source.Vector.prototype.isGeometryInArea_ = function(area, geometry, opt_rect
case ol.geom.GeometryType.POLYGON:
case ol.geom.GeometryType.CIRCLE:
case ol.geom.GeometryType.MULTI_LINE_STRING:
geometry = geometry.clone();
os.geo2.normalizeGeometryCoordinates(geometry, area.getCoordinates()[0].x);
var jstsGeometry = os.geo.jsts.OLParser.getInstance().read(geometry);
match = jstsGeometry != null &&
(area.contains(jstsGeometry) || area.crosses(jstsGeometry) || area.overlaps(jstsGeometry));
Expand All @@ -2924,6 +2931,11 @@ os.source.Vector.prototype.isGeometryInArea_ = function(area, geometry, opt_rect
}

for (i = 0, n = jstsAreas.length; i < n; i++) {
if (wrap) {
var first = jstsAreas[i].vertX[0];
x = os.geo2.normalizeLongitude(x, first - halfWidth, first + halfWidth);
}

if (opt_rectangular || os.geo.isCoordInArea(x, y, jstsAreas[i].vertX, jstsAreas[i].vertY, jstsAreas[i].nVert)) {
match = true;
break;
Expand Down

0 comments on commit c1040a5

Please sign in to comment.