2012-06-29 3 views
1

Я использую плагин jQuery для GMAP3.закрыть gmap3 infowindow при нажатии на кнопку

Я использую следующий пример, чтобы добавить InfoWindow http://gmap3.net/api/add-info-window.html

Как я могу сделать InfoWindow близко, когда мышь щелкнул от InfoWindow?

До сих пор я пытался

var inside = false; 
$('.infowindow').live('mouseenter',function(){ 
    inside=true; 
}).live('mouseleave', function(){ 
    inside=false; 
}); 
$("body").mouseup(function(){ 
    if(!inside) $('.infowindow').remove(); 
}); 

Но это держит InfoWindow открытым, но удаляет содержимое из класса InfoWindow.

Я пытаюсь установить infowindow.close(), но не могу заставить его работать?

EDIT: Вот функция addinfowindow

function addInfoWindow(lati, longi, name, datestring) { 
    // get address 
    $("#dispatcher").gmap3({ 
    action: 'getAddress', 
    latLng: [lati, longi], 
    callback: function (results) { 
     content = results && results[1] ? results && results[1].formatted_address : 'No Address'; 

     // create infowindow  
     $('#dispatcher').gmap3({ 
     action: 'addInfoWindow', 
     latLng: [lati, longi], 
     infowindow: { 
      options: { 
      content: name 
      }, 
      events: { 
      closeclick: function (infowindow, event) { 
       //alert('closing : ' + $(this).attr('id') + ' : ' + infowindow.getContent()); 
      } 
      }, 
      apply: [{ 
      action: 'setContent', 
      args: ['<span class="infowindow">' + name + '<br />' + content + '<br />' + datestring + '<span>'] 
      }] 
     } 
     }); 

    } // end callback 

    }); 
} 
+0

Как вы определяете свой 'infowindow' obejct при закрытии' close() '. Это удалит только элемент DOM, но не использует gMaps API. Кроме того, вы присоединяетесь к ** событию mouseleave **, пока вы упоминаете, что хотите закрыть, когда мышь ** щелкнула ** вдали от информационного окна? Должно ли информационное окно закрыть мышь или щелкнуть мышью? – toske

+0

close on mouse click .. –

+0

Я обновил qustion, где я должен определить infowindow, чтобы я мог использовать .close()? –

ответ

1

Если закрытие по щелчку мыши за пределами информационного окна желательно действия, следующий код должен работать:

var map = creteMap(); 
var infoWindow = createInfoWindow(map); 

google.maps.event.addListener(map, 'click', function() { 
     infoWindow.setMap(null); 
}); 

Обратите внимание, что createMap() и createInfoWIndow абстрагируются , Событие Click не будет срабатывать при нажатии самого окна ввода, так как оно является «над» объектом карты.

Вместо создания InfoWindow как

$('#dispatcher').gmap3({ 
     action: 'addInfoWindow', 
     latLng: [lati, longi], 
     infowindow: { 
      options: { 
      content: name 
      }, 
      events: { 
      closeclick: function (infowindow, event) { 
       //alert('closing : ' + $(this).attr('id') + ' : ' + infowindow.getContent()); 
      } 
      }, 
      apply: [{ 
      action: 'setContent', 
      args: ['<span class="infowindow">' + name + '<br />' + content + '<br />' + datestring + '<span>'] 
      }] 
     } 
     }); 

Вы должны добавить InfoWindow вне GMAP3 плагин как:

function createInfoWindow(lati, longi, mapDivId,mapOptions, infowindowHtml){ 
    var map = new google.maps.Map(document.getElementById(mapDivId),mapOptions); 

    var latLng = new google.maps.LatLng(lati,lngi); 
    var infoWindow = new google.maps.InfoWindow(); 
    infoWindow.setContent(infowindowHtml); 
    infoWindow.setPosition(latLng); 
    google.maps.event.addListener(map, 'click', function() { 
     infoWindow.setMap(null); 
    }); 

    infoWindow.open(map); 
} 

Для справки на карте опций take a look at this example

Отказ от ответственности: я не проверял этот код, поэтому могут быть опечатки и т. д., но это способ сделать это вне плагина GMAP3.

Edit: Использование GMAP3 плагин, это должно быть выполнимо таким образом, хотя я не пробовал:

$('#dispatcher').gmap3({ 
     action: 'addInfoWindow', 
     latLng: [lati, longi], 
     callback : function(infoWindowObj) { 
       if(infoWindowObj.getMap() != null){ 
         infoWindowObj.getMap().addListener(map, 'click', function() { 
          infoWindowObj.setMap(null); }); 

       } 
     }, 
     infowindow: { 
      options: { 
      content: name 
      }, 
      events: { 
      closeclick: function (infowindow, event) { 
       //alert('closing : ' + $(this).attr('id') + ' : ' + infowindow.getContent()); 
      } 
      }, 
      apply: [{ 
      action: 'setContent', 
      args: ['<span class="infowindow">' + name + '<br />' + content + '<br />' + datestring + '<span>'] 
      }] 
     } 
     }); 

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

+0

Я не вижу, как связать это с кодом, который я опубликовал? –

+0

взглянуть на отредактированную версию, которую я опубликовал – toske

+0

, так что невозможно с реализацией GMAP3? –

Смежные вопросы