Хорошо, проблема связана с тем, что я использовал Marker Clusterer на карте ... по сути, происходило следующее:
- Щелкните элемент в таблице,
InfoWindow
откроется
- Карта перемещается на место для отображения
InfoWindow
- Когда панорамирование завершено, кластерный маркер затем перерисовывает (если необходимо) и принудительно закрывает
InfoWindow
.
Мое решение состояло в том, что при щелчке по элементу в таблице я получаю соответствующий Marker's
latlng, вручную перемещаюсь в это место, ожидаю завершения панорамирования через прослушиватель 'idle', и когда завершено Clusterer сделал его перерисовку), ТО я открываю InfoWindow
.
// get map, marker positions
var mapLatLng = GLOBAL_map.getCenter();
var markerLatLng = GLOBAL_markers[index].getPosition();
// pan the map
if(!markerLatLng.equals(mapLatLng)) {
// map will need to pan
GLOBAL_map.panTo(markerLatLng);
google.maps.event.addListenerOnce(GLOBAL_map, 'idle', function() {
// open InfoWindow
GLOBAL_infowindow.setContent(GLOBAL_markers_content[index]);
GLOBAL_infowindow.open(GLOBAL_map, GLOBAL_markers[index]);
});
} else {
// map won't be panning, which wouldn't trigger 'idle' listener
GLOBAL_infowindow.setContent(GLOBAL_markers_content[index]);
GLOBAL_infowindow.open(GLOBAL_map, GLOBAL_markers[index]);
}