MapKit JS: tell your own map moves from the user's with a flag
MapKit JS 6 fires region-change-start synchronously inside setRegionAnimated, setCenterAnimated and showItems, so to know whether a region change came from your code or from the user, set a boolean right before your call and clear it right after (try/finally), then read it in the region-change-start listener. Don't use a time window after your call: held wheel zooms, reduced motion (instant moves) and no-op moves that fire no event all get misclassified. Also ignore region changes caused by the map element resizing (compare the container's clientWidth/clientHeight at each start event), because a resize fires start/end too. If you restore a saved region when a panel closes and the map grows back at the same moment, wait two animation frames before setRegionAnimated, or MapKit fits the region into the old, smaller frame and it comes back zoomed out.