This is unfortunately because of the marker events, we need to detect if the cursor is over a marker and there are no events for a specific marker object, only a map level, therefore we need to loop through all markers. Google Maps for example does not have that issue as there is a way to add events for each object. TTMSFNCMapsMarker is a class that is a collection item, the collection is not capable of creating TMyClass as a descendant. When using AddMarker it creates a TTMSFNCMapsMarker, not a TMyClass. If you want to assign custom data to a marker you need to work with the Data* properties.