Найден этот метод, позволяющий использовать DIV в качестве пользовательских карт Google InfoWindow.Это работает, но кажется немного хакерским. Есть ли более простой способ?
a) Настройка наложения
MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.draw = function() {}
overlay = new MyOverlay(this.map);
function MyOverlay(map) { this.setMap(map); }
b) Нажмите слушателя на каждый маркер
google.maps.event.addListener(markers[i], 'click', function() {
displayInfo(this);
});
c) отображение функции infoWindow
function displayInfo(marker) {
var e = $('#infobox');
overlay.getPanes().floatPane.appendChild(e);
//important! Removes already active listeners.
if(displayInfoProcess) {google.maps.event.removeListener(displayInfoProcess);}
displayInfoProcess = google.maps.event.addListener(map, 'bounds_changed', function() {
show('#infobox');
var markerOffset = overlay.getProjection().fromLatLngToDivPixel(marker.position);
e.style.top = markerOffset.y - 115 + 'px';
e.style.left = markerOffset.x - 57 + 'px';
e.innerHTML = marker.store + '<br><em>' +marker.distance;
});
map.panTo(marker.position);
}