As usual, 10 minutes after posting the question I found the issue.
I’m embarrassed to admit that in the first line of the main function where $markers is defined I had put in the selector of the .acf-map before .marker, so it was trying to look within $el (which is itself ‘.acf-map’) for another .acf-map and within that, .marker.
A stupid mistake, but hopefully someone, somewhere will find this useful!