Básicamente, usted quiere una función que mantiene la referencia a uno new InfoBox()
=> delegar el evento onclick. bien la creación de sus marcadores (en un bucle) utilizan bindInfoBox(xhr, map, marker);
// @param(project): xhr : data for infoBox template
// @param(map): object : google.maps.map
// @param(marker): object : google.maps.marker
bindInfoBox: (function() {
var options = $.extend({}, cfg.infoBoxOptions, { pixelOffset: new google.maps.Size(-450, -30) }),
infoBox = new window.InfoBox(options);
return function (project, map, marker) {
var tpl = renderTemplate(project, cfg.infoBoxTpl); // similar to Mustache, Handlebars
google.maps.event.addListener(marker, 'click', function() {
infoBox.setContent(tpl);
infoBox.open(map, marker);
});
};
}())
var infoBox
se asigna de forma asíncrona y se mantiene en la memoria. Cada vez que llame al bindInfoBox()
, se llamará a la función de retorno. ¡También es útil pasar el infoBoxOptions
solo una vez!
En mi ejemplo, he tenido que agregar un parámetro adicional al map
ya que mi inicialización se ve demorada por eventos de tabulación.
InfoBoxOptions
¿Qué has intentado? – IgniteCoders