У меня есть две разные функции для извлечения школ и ресторанов из службы Мест.В одной функции я передаю типы как Школы и выбираю массив школ относительно моего текущего местоположения и использую значок, чтобы показать на карте.И в другой функции я выбираю множество ресторанов.Теперь проблема с информационным окном.Я нажимаю на иконку школы, и она открывает информационное окно, затем я нажимаю на иконку ресторана, но ранее открытая иконка школы не приближается.Поскольку оба информационных окна находятся в двух разных функциях, Как закрыть все ранее открытые информационные окна.
getSchoolsList() {
var markers = [];
var infoWindow = [];
if (counter == 0) {
let service = new google.maps.places.PlacesService(map);
...
// call placesService and fetch results
...
}, (results, status) => {
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: './assets/images/marker_inactive.png',
});
markers.push(marker);
// set infowindow for every marker
google.maps.event.addListener(marker, 'mouseover', function () {
if (infowindow != null) {
infowindow.close();
}
google.maps.event.addListener(map, "click", function(event) {
infowindow.close();
});
var index = markers.indexOf(this);
infowindow.setContent('<h1>hi</h1>');
infowindow.open(map, this);
});
}
}
});
});
getParksList() {
var markers = [];
if (parkcounter == 0) {
let service = new google.maps.places.PlacesService(map);
...
// call placesService and fetch results
...
}, (results, status) => {
console.log('results..', results);
this.lengthOfSchools = results.length;
console.log('this.lengthOfSchools', this.lengthOfSchools);
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: './assets/images/marker_active.png',
});
markers.push(marker);
// set infowindow for every marker
google.maps.event.addListener(marker, 'mouseover', function () {
if (infowindow != null) {
infowindow.close();
}
google.maps.event.addListener(map, "click", function(event) {
infowindow.close();
});
var index = markers.indexOf(this);
infowindow.setContent('<h1>hi</h1>');
infowindow.open(map, this);
});
}
}
});
});