Используя Google maps v2, я смог предотвратить переход событий прокрутки мыши (DOMMouseScroll) на карту и масштабирование карты, обработав и отменив события прокрутки мыши. Однако в v3 это больше не работает.
Вот пример. Попробуйте прокрутить текст колесиком мыши
Обратите внимание, как перетаскивание и двойные щелчки отменяются до того, как они попадут на карту, однако, если вы попытаетесь прокрутить текст, событие DOMMouseScroll сразу же перейдет к карте.
Код для отмены событий в основном такой же, как и в версии 2, и выглядит следующим образом:
// Set the overlay's div_ property to this DIV
this.div_ = div;
var cancelEvent = function(e)
{
if( (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) ||
navigator.userAgent.indexOf('Opera') > -1) {
window.event.cancelBubble = true;
window.event.returnValue = false;
} else {
e.stopPropagation();
}
return false;
}
var panes = this.getPanes();
panes.floatPane.appendChild(div);
var stealEvents = [ 'mousedown', 'dblclick', 'DOMMouseScroll', 'onmousewheel', 'drag'];
for( i=0; i < stealEvents.length; i++ ){
google.maps.event.addDomListener(this.div_, stealEvents[i], cancelEvent);
}
// for IE/Opera
if( (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) ||
navigator.userAgent.indexOf('Opera') > -1) {
this.div_.attachEvent('onmousewheel', cancelEvents);
}
// for safari
if ( navigator.userAgent.indexOf('AppleWebKit/') > -1) {
this.div_.onmousewheel = cancelEvents;
}