You will notice in the stack trace several calls to calcScreenPosition which trigger native synchronous calls and effectively call a deep nest of invokeAndBlock.
What happens is this:
- You ask for screen coordinates
- Map cn1lib goes into Android and asks for this but because this needs to run on the native android thread it uses invokeAndBlock to wait for the Android native thread
- Android takes a while to complete the answer
- While Android is taking its time you ask for screen coordinates again and again...
This ends up nesting invoke and block calls which creates problems after some depth. It's a powerful tool but it's meant for coarse things not things you do often. I'm not sure if the current maps have an asynchronous version of the API but if it does you need to use that API. If not we'll need to add such an API.