информационные окна на кнопках не закрываются на картах Google - PullRequest
1 голос
/ 04 февраля 2011

Я использую Google Maps API v3. я добавляю маркеры, вызывая эту функцию:

function createMarker(posn, title, html) {
              var marker = new google.maps.Marker ({position:posn, title: title, draggable: false});
              var infowindow = new google.maps.InfoWindow({content: html});
              google.maps.event.addListener(marker, "click", function() {
                   infowindow.open(map,marker);
              }); 
              return marker;
          }

все работает нормально, единственная проблема - когда я нажимаю на канцелярскую кнопку, открывается окно, но когда я нажимаю на другую канцелярскую кнопку, окно первого информационного окна не закрывается, и оба информационных окна видны.

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Не знаю, решили ли вы это, но то, как я это сделал, было:

function createMarker(posn, title, html) {
              var marker = new google.maps.Marker ({position:posn, title: title, draggable: false});

              google.maps.event.addListener(marker, "click", function() {
                   infowindow.open(map,marker);
              });
              infowindow = new google.maps.InfoWindow({content: html});
              return marker;
          }

Это работает, и окна закрываются, когда нажимается другой штифт, но кнопка закрытия "X" не работает ...

0 голосов
/ 04 февраля 2011

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

//define a global array
infoWindows = new Array();

//..do your stuff

function createMarker(posn, title, html) {
      var marker = new google.maps.Marker ({position:posn, title: title, draggable: false});
      var infowindow = new google.maps.InfoWindow({content: html});
      //add this infowindow to an array
      infoWindows.push(infowindow);
      google.maps.event.addListener(marker, "click", function() {
         //go through the array and close all open info windows
         for (i=0;i<infoWindows.length;i++) {
             infoWindows[i].setMap(null);
         }
         //open current info window
         infowindow.open(map,marker);
      }); 
      return marker;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...