3

У меня есть div Google Maps и список флажков, которые я использую для фильтрации маркеров на карте.Как удалить InfoWindow при удалении маркера?

Но если я нажму на маркер, откройте InfoWindow, а затем установите флажок, чтобы удалить маркеры этого типа, InfoWindow не удаляется с карты.

После того как я удалить маркеры, я называю этот код, но в InfoWindow пребывания:

try { 
    if(infowindow) { 
      infowindow.close(); 
    } 
} 
catch(err) { } 

ответ

4
function closeInfoWindow() { 
     if (infoWindow !== null) { 
      google.maps.event.clearInstanceListeners(infoWindow); // just in case handlers continue to stick around 
      infoWindow.close(); 
      infoWindow = null; 
     } 
    } 
+0

Я получаю ошибку в браузере: Uncaught ReferenceError: infoWindow не задано – 1110

+0

Попробуйте изменить infoWindow в ответе на infowindow и убедитесь, что ваш infowindow var является глобальным. –

+0

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

5

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

google.maps.event.addListener(marker, "click", function() { 
    var bubble = new google.maps.InfoWindow({ 
     content: buildBubbleContent(param1, param2) 
    }); 
    bubble.open(map, marker); 
    //pretty standard stuff to here, but the next line is new (for me): 
    google.maps.event.addListenerOnce(marker, "visible_changed", function() { 
     bubble.close(); 
    }); 
}); 

Как обсуждалось в вопросе: How do I clean up an InfoWindow when the associated Marker is hidden?:

+0

Помог ли вам этот ответ? –

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