Hi @Marena and everyone, just wanted to give a quick update on progress here.
Thanks to Tobrun, #935 is solved—there was just another API call that I didn't realize was related.
After that information helped me understand the root cause of #935, I decided to attach custom data to the symbols in a different way. It's still a bit of a workaround, but it's fine, so #934 is not a blocker.
That change helped make it possible to come up with a workaround for #937. I think #937 should still be addressed, but the workaround does the job! (Our code now maintains a local flag to keep track of whether a drag was taking place, and checks that flag in both onMapClick and onMapLongClick, ignoring the click if a drag is in progress.)
And as mentioned before, #936 is a nice-to-have. (Addressing #935 did not impact #936.)
This means we have a working implementation of Mapbox SDK that is essentially feature-complete! Thanks to @langstonsmith for discussing these and helping me out, and building most of the Mapbox implementation on which this is built.
There is one issue left, which is that the Mapbox SDK crashes (in a way that looks deliberate) when I initialize it with an empty string as the access token. It wasn't doing this before in my simpler testing, so I need to figure out what is different about the situation when it is being used by ODK Collect. We need the Mapbox SDK to work with an empty access token and show the OSM tiles as a fallback. @langstonsmith has offered to look into this (thank you!)—Langston, when you have any updates, let's use this forum thread to discuss the issue.
So, the remaining work I have to do is to fix this crash and to change the Settings screens to give options for the Mapbox map, and we also need to decide on a deprecation path for OSMdroid. If all that goes smoothly, we may be able to release it soon, perhaps in the next release of ODK Collect!