2012-05-21 5 views
0

Если определенные условия выполняются, когда закрывается инфо-окно, я хочу предотвратить запуск события закрытия по умолчанию. Можно ли это достичь? Я попробовал несколько вещей, как:Предотвращение закрытия Google карт с закрытием

  1. Останов распространение события
  2. возвращающихся от ложного метода обратного вызова
  3. нет никаких методов/свойств раскрываемых InfoWindow что либо предотвратить близко.

Пожалуйста, дайте мне знать, если это возможно.

ответ

0

InfoWindow на самом деле не обеспечивает способ распространения событий на шаге. Я не знаю, может ли это сработать для вас, но есть InfoBox Utility Library, который дает вам гораздо больше контроля над своим поведением. Конкретные на ваш вопрос, то InfoBoxOptionsapi-doc объект включает свойство:

enableEventPropagation, логические, что позволит вам контролировать, будет ли InfoBox: размножать MouseDown, нажмите, DblClick и Контекстное события в Infobox (по умолчанию является ложным для имитации поведения google.maps.InfoWindow). Установите для этого свойства значение true, если InfoBox используется как метка карты. Примечание для iPhone: Это свойство не влияет; события всегда распространяются.

0

Единственное, что вы можете сделать, это поймать событие closeclick, которое ни к чему не приведет.

Я как-то взломал что-то совместное, для одноразового решения, которое может работать или не работать для вас: я определил способ добраться до метки x, которую пользователь нажимает, чтобы закрыть, и удалил это. Пользователь не может закрыть информационное окно. Вообще. Вы все еще можете, позвонив .close().

ВНИМАНИЕ! ЭТО ХАРАКТЕР

var a=document.getElementById('map_canvas'); 
var b=a.getElementsByTagName('img'); 
var i, j=b.length; 
for (i=0; i<j; i++) { 
    if(b[i].src.match('imgs8.png')){ 
    if(b[i].style.left=='-18px') { 
     c=b[i].parentElement.parentElement; 
     console.log(c); 
     if(c.innerText.match("Map data")) { 
     console.log('no'); 
     } else { 
     b[i].parentElement.removeChild(b[i]); 
     } 
    } 
    } 
} 

0. Если вы храните ссылку на отметку [x], вы можете даже включить ее и выключить по желанию.

EDIT:

A demonstration of this hack

0

Вы всегда можете слушать близкое событие, а затем бросить яваскрипт ошибки, чтобы сохранить его от закрытия. Пример:

google.maps.event.addListener(my_infoWindow, 'closeclick', function(e){ 
    // Throw an error to stop the close 
    throw "stop close"; 
}) 
+0

К сожалению, «e» не определено –