Hi @KevinCheriyan.
Thanks for reaching out to the Runtime team. Unfortunately there's nothing that will do exactly like you're wanting to do. However there are some tweaks we can recommend to your workflow (which is quite good) that might help.
When you do the feature query to get the features in your buffered polygon, you can run a queryFeaturesCount to "walk in" your buffer area to reduce the number of features. So for instance if your search will return 10,000 features (getting the count should be quick), you can reduce the size of your polygon buffer area until you get a reasonable number of features to check with the GeometryEngine, perhaps 100 or less. This will require testing to find the sweet spot. It's also possible your features as so densely packed that you can't get only 100. As I said, it will require some testing.
>This doesn't work because my feature layer has 120,000 point features. If I iterate through each of them to check if they intersect with my buffer polygon, it can take a LONG time.
Just to clarify, but when you do your query with your buffer geometry, you should get a subset of features and not need to iterate all 120,000 features.
So my recommendation would be to slightly tweak your workflow as follows:
1. When the mouse is clicked, create a buffer polygon (size will come from testing).
2. Set that polygon as the geometry on your QueryParameters (https://developers.arcgis.com/qt/qml/api-reference/qml-esri-arcgisruntime-queryparameters.html#geome...)
3. First run a queryFeatureCount task to see how many features are in your polygon area: https://developers.arcgis.com/qt/qml/api-reference/qml-esri-arcgisruntime-featuretable.html#queryFea...
4. Walk that in to get a reasonable number of features
5. Then proceed with queryFeatures to get your set of features: https://developers.arcgis.com/qt/qml/api-reference/qml-esri-arcgisruntime-featuretable.html#queryFea...
6. Iterate through them with GeometryEngine to determine which feature is nearest to the clicked point.
Let us know if that help.