Opened 10 years ago

Last modified 10 years ago

#2459 closed defect

v2.6 QUERYMAPFEATURES may produce inconsistent results — at Initial Version

Reported by: jng Owned by: jng
Priority: high Milestone: 2.6
Component: Rendering Service Version:
Severity: critical Keywords:
Cc: External ID:

Description

The v2.6 QUERYMAPFEATURES works like this:

  1. Call MgRenderingService::QueryFeatures() with the given parameters (returns a MgFeatureInformation)
  2. Call MgRenderingService::RenderDynamicOverlay() with the given parameters (if inline selection is requested)
  3. Call MgRenderingService::QueryFeatureProperties() with the given parameters (if attributes is selected)

All 3 components are then married up to form the final response.

A click-based selection will issue QUERYMAPFEATURES with MAXFEATURES=1. For a map with more than 1 selectable layer (eg. Parcels, Trees), there may be cases where the following happens.

  1. Call MgRenderingService::QueryFeatures() with the given parameters. Returns a MgSelection with Parcels selected.
  2. Call MgRenderingService::RenderDynamicOverlay() with the given parameters. Returns an image of the selected parcel
  3. Call MgRenderingService::QueryFeatureProperties() with the given parameters. Returns the attributes of the first selected Tree. Because MAXFEATURES=1, no attributes for Parcels are returned.

The problem is when a click could select more than one layer, the attributes may be collected for the wrong layer, even if that layer has candidate matching features. When MAXFEATURES=1 and we requested LAYERNAMES=Trees,Parcels and a selection image/XML of Parcels is returned, at this point we only want to collect attributes from Parcels instead of Trees and Parcels.

Basically when we have a MgFeatureInformation, we want to use the layer names within its MgSelection for collecting the matching attributes instead of using the layer names from the original request.

Change History (1)

by jng, 10 years ago

Attachment: 2459.patch added
Note: See TracTickets for help on using tickets.