diff --git a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FeatureLayer.java b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FeatureLayer.java index 644dd8910e..ffdceb6fad 100644 --- a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FeatureLayer.java +++ b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FeatureLayer.java @@ -150,13 +150,14 @@ public FeatureLayerData infoQuery(final LayerQuery query, List headers) layerRadius = getMetadata().getMapOptions().getFeatureInfoRadius(); } final Envelope clickBox = query.calcClickBox(layerRadius > -1 ? layerRadius : query.getLayerRadius()); + final ValueReference geomProp = findGeometryProperty(style); - filter = (OperatorFilter) addBBoxConstraint(clickBox, filter, null, false); + filter = (OperatorFilter) addBBoxConstraint(clickBox, filter, geomProp, false); filter = Filters.repair(filter, AppSchemas.collectProperyNames(featureStore.getSchema(), featureType)); LOG.debug("Querying the feature store(s)..."); - QueryBuilder builder = new QueryBuilder(featureStore, filter, featureType, clickBox, query, null, + QueryBuilder builder = new QueryBuilder(featureStore, filter, featureType, clickBox, query, geomProp, sortByFeatureInfo, getMetadata().getName()); List queries = builder.buildInfoQueries(); diff --git a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FilterBuilder.java b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FilterBuilder.java index 494d6df552..db5e5c7e69 100644 --- a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FilterBuilder.java +++ b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/FilterBuilder.java @@ -93,7 +93,7 @@ static OperatorFilter buildFilterForMap(OperatorFilter filter, Style style, Laye return filter; } - static OperatorFilter buildFilter(Operator operator, FeatureType ft, Envelope clickBox) { + static OperatorFilter buildFilter(Operator operator, FeatureType ft, Envelope clickBox, ValueReference geomProp) { if (ft == null) { if (operator == null) { return null; @@ -112,9 +112,9 @@ static OperatorFilter buildFilter(Operator operator, FeatureType ft, Envelope cl // obnoxious case where feature has no geometry properties (but features may // have extra geometry props) if (operator == null) { - return new OperatorFilter(new Intersects(null, clickBox)); + return new OperatorFilter(new Intersects(geomProp, clickBox)); } - return new OperatorFilter(new And(operator, new Intersects(null, clickBox))); + return new OperatorFilter(new And(operator, new Intersects(geomProp, clickBox))); } if (operator == null) { return new OperatorFilter(list.get(0)); diff --git a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/QueryBuilder.java b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/QueryBuilder.java index d84b7aa3e1..2800484397 100644 --- a/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/QueryBuilder.java +++ b/deegree-layers/deegree-layers-feature/src/main/java/org/deegree/layer/persistence/feature/QueryBuilder.java @@ -132,10 +132,10 @@ List buildInfoQueries() { public Query apply(FeatureType u) { Filter f; if (filter == null) { - f = buildFilter(null, u, bbox); + f = buildFilter(null, u, bbox, geomProp); } else { - f = buildFilter(((OperatorFilter) filter).getOperator(), u, bbox); + f = buildFilter((filter).getOperator(), u, bbox, geomProp); } return createQuery(u.getName(), f, -1, query.getFeatureCount(), -1, sortBy); } @@ -145,11 +145,11 @@ public Query apply(FeatureType u) { else { Filter f; if (filter == null) { - f = buildFilter(null, featureStore.getSchema().getFeatureType(ftName), bbox); + f = buildFilter(null, featureStore.getSchema().getFeatureType(ftName), bbox, geomProp); } else { - f = buildFilter(((OperatorFilter) filter).getOperator(), - featureStore.getSchema().getFeatureType(ftName), bbox); + f = buildFilter((filter).getOperator(), featureStore.getSchema().getFeatureType(ftName), bbox, + geomProp); } queries.add(createQuery(ftName, f, -1, query.getFeatureCount(), -1, sortBy)); }