Ваш код почти идеален. За исключением того, что вместо:
infowindow.open(Gmaps.map, marker);
Вы должны иметь:
infowindow.open(Gmaps.map.map, marker);
Действительно, Gmaps.map - это контейнер, Gmap.map.map - это объект Google.
Я знаю, что эти имена сбивают с толку. К сожалению.
PS: обязательно ставьте этот код под вызов gmaps, по вашему мнению.