Это довольно старый, но подумал, я бы попробовал
Я не уверен, что такое InfoBubble для моего примера. Я использую InfoWindow.
function createMarker(objPoint)
{
objPoint = new google.maps.LatLng(strLat, strLng);
strFromHtml = 'Your HTML';
//creates the window with the options
objInfoWindow = new google.maps.InfoWindow(
{
content: strToHtml,
maxWidth: 250,
zIndex: -1
});
var markerOptions =
{
position: objPoint,
map: objMap
}
objMarker = new google.maps.Marker(markerOptions);
//if the marker is clicked open the window
google.maps.event.addListener(objMarker, "click", function()
{
objInfoWindow.open(objMap, objMarker);
});
}
Сначала я создаю окно, затем маркер, затем прикрепляю прослушиватель щелчков для маркера, чтобы при нажатии на маркер на нем отображалось информационное окно. Вы могли бы убрать щелчок и просто отобразить его, но для моих целей я хотел, чтобы они щелкнули по нему.
EDIT
Хорошо, я перечитал ваш вопрос около 50 раз, и я надеюсь, что это хорошее решение. Что касается нескольких маркеров в одном месте, у меня нет ответа на этот вопрос. Я думаю, что у меня есть ответ для нескольких маркеров с собственной информацией. Если это не сработает, то вам придется создать пример в jsfiddle или что-то другое, иначе я не понимаю, что вы хотите. Проверьте это здесь jsfiddle
При создании информационного окна вы создаете его только один раз с содержимым по умолчанию. Так что поместите это в инициализацию самой карты. Затем при создании маркеров вы можете использовать сам маркер, чтобы он содержал html для отображения информационного окна.
var markerOptions =
{
position: objPoint,
map: objMap,
html: strHtml//added to make the marker object store the content of the infowindow
}
Затем в вашем слушателе при наведении курсора вы используете this.html
, чтобы получить содержимое для информационного окна
google.maps.event.addListener(objMarker, "mouseover", function()
{
objInfoWindow.setContent(this.html);
objInfoWindow.open(objMap, this);
});
Что касается нескольких маркеров в одном месте. Я бы сказал программно, что вам нужно поймать это и создать только один маркер с содержанием обоих в одном маркере.