= !MapGuide RFC 176 - Update QUERYMAPFEATURES to include selection key with feature attributes = This page contains a change request (RFC) for the !MapGuide Open Source project. More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date||6 Aug 2019|| ||Last Modified||6 Aug 2019|| ||Author||Jackie Ng|| ||RFC Status||ready for review|| ||Implementation Status||pending|| ||Proposed Milestone||3.0|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||+1|||| ||+0|||| ||-0|||| ||-1|||| ||no vote|| || == Overview == This RFC proposes to introduce a new version of `QUERYMAPFEATURES` that includes selection key with feature attributes. == Motivation == The current `QUERYMAPFEATURES` (v2.6.0) operation allows requesting an XML selection set along with feature attributes for this selection. The layout of this response is such that one might think that would be possible to implement viewer features like sub-selection highlighting by using the array index of the feature attributes collection to pick the corresponding selection key from the selection set XML. It turns out that, this approach is based on a fatally-flawed assumption that selection set XML is rendered out in the same order as the selected feature attributes. This is actually not the case. The result of this incorrect assumption results in bugs such as this one for [https://github.com/jumpinjackie/mapguide-react-layout/issues/804 mapguide-react-layout] where wrong features are being sub-selected with respect to the "current" feature's attributes being displayed on the property palette. == Proposed Solution == Introduce a new `QUERYMAPFEATURES` v4.0.0 operation. This takes the same parameters as its v2.6.0 counterpart, except when requesting feature attributes, the operation will include a `` element along side every `` element in the selection attribute set. This selection key can be used to construct a new selection XML by which a proper sub-selection highlighting can be done. Instead of trying to pick the matching selection key by (erroneous) array index lookup in the selection set XML, the selection key is included with every feature's attributes. == Implications == This is a new operation. == Test Plan == Verify proper sub-selection is possible with v4.0.0 `QUERYMAPFEATURES` == Funding / Resources == Community