innanzitutto comincia ad usare la scrittura:

_root.map._xscale += 30;

che è molto + comoda di:

_root.map._xscale = _root.map._xscale +30;

...a parte questo direi che devi tenere traccia in ogni momento della distanza del centro della mappa rispetto al centro dell'area visibile per fare una cosa tipo

tu hai du mc, uno "mappa" e uno "area"...

al che a mappa come action gli dai una cosa del tipo

onClipEvent(enterFrame) {
distx = _root.area._x - _x;
disty = _root.area._y - _y;
}

poi al bottone per zoommare indietro innanzitutto non gli dai + un incremento, ma moltiplica per un fattore...

_root.mappa._xscale*=0.75;

questo perchè questo fattore almeno lo possiamo usare anche per calcolare la nuova distanza ovvero

_root.mappa.targetdistx = _root.mappa.distx*0.75;
_root.mappa.targetdisty = _root.mappa.disty*0.75;

e poi lo posizioni in base alla nuova distanza che hai calcolato

_root.mappa._x = _root.mappa.targetdistx;
_root.mappa._y = _root.mappa.targetdisty;

in questo modo se prima la mappa era centrata sulla città di Empoli, lo sarà ancora dopo la zoommata... quindi le azioni al bottone saranno:
codice:
on(release) {
_root.mappa._xscale*=0.75;
_root.mappa.targetdistx = _root.mappa.distx*0.75;
_root.mappa.targetdisty = _root.mappa.disty*0.75;
_root.mappa._x = _root.mappa.targetdistx;
_root.mappa._y = _root.mappa.targetdisty;
}
e poi sarà il mc della mappa ad autocontrollarsi per non uscire rientrare oltre il bordo

onClipEvent(enterFrame) {
if(_x-_width/2<_root.area._x-_root.area._x/2) {
//mettilo a posto bla bla bla...
}

l'ho buttato giù di getto qui e non l'ho provato, ma + o meno la teoria è questa (occhio che devi farlo anche per lo zoom in... perchè la prima volta tutto bene, ma anche con lo zoom in dopo averlo draggato un po' va tutto a quel paese

ciauz