API do Google Maps v3 + infoBubble no marcadorClusterer
-
13-11-2019 - |
Pergunta
Eu estava tentando adicionar um infoBubble a um marcadorCluster no evento 'clusterclick', mas o método infoBubble.Open pede um parâmetro 'marker' para vincular.O problema é que um marcadorCluster não é um google.maps.Point, portanto não é possível vincular o infoBubble a ele.
Atribuí a posição do marcadorCluster ao infoBubble, mas o infoBubble redesenha na nova posição movendo o marcador de sua posição.
Alguém já teve o mesmo problema?Existe uma solução sem modificar o código original do infoBubble?
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/
Solução
Problema de solução 1:O parâmetro marcador era opcional. Se eu simplesmente nunca o atribuir, o problema estará resolvido.
Usar:
infoBubble.setPossition(latLng);
infoBubble.open(map);
Não:
infoBubble.open(map, marker);
Problema 2:Mas agora que o infoBubble aparece no mercado, existe uma maneira de movê-lo para cima?
Problema de solução 2:
Modifiquei o sourceCode do InfoBubble para conter um offsetParameter e depois adicionei os pixels na função draw:
InfoBubble.prototype.PIXEL_OFFSET = 0
...
var top = pos.y - (height + arrowSize); if (anchorHeight) { top -= anchorHeight; } top -= this.PIXEL_OFFSET
Apenas no caso de alguém ter o mesmo problema
Outras dicas
Adicione isto à linha 93 (abaixo dos outros campos de opção)
if (options['pixelOffset'] == undefined) {
options['pixelOffset'] = this.PIXEL_OFFSET_;
}
Por volta da linha 182, adicione isto
InfoBubble.prototype.PIXEL_OFFSET_ = [0.0];
Perto da linha 908, adicione isto:
top -= this.get('pixelOffset')[1]; // Add offset Y.
left -= this.get('pixelOffset')[0]; // Add offset X.
As linhas acima devem ser colocadas acima:
this.bubble_.style['top'] = this.px(top);
this.bubble_.style['left'] = this.px(left);
Agora em sua construção há opções que você pode fazer
var popupWindowOptions = {
backgroundColor: '#2B2B2B',
arrowStyle: 0,
pixelOffset: [0,16]
};
this.popupWindow = new InfoBubble(popupWindowOptions);