Como atualizar pixelPosition de um InfoWindows personalizados no Google Maps V3 depois de arrastar?

StackOverflow https://stackoverflow.com/questions/1868663

Pergunta

Estou criando um novo mashup no topo do Google Maps. É simples o suficiente para que eu escolhi usar V3 para proporcionar maior vida útil.

No entanto, há algumas necessidades especiais que o Google Maps InfoWindow não fornece.

Eu posicionei meu InfoWindow personalizado com marker.projectionContainer.pixelPosition. Recebo posição correta depois de ter aproximado, mas arrastando não atualiza marcadores pixelPosition. Como posso obter diferença entre marcadores de posição de velho e novo, depois de arrastar?

ou

Devo usar OverlayView em vez de tentar hackear posição do DOM? Acho próprios InfoWindows Mapas são atualizados automaticamente / estacionado em painéis.

Foi útil?

Solução

Esta resposta assume que por arrastar você quer dizer arrastando o marcador e não arrastar o mapa, deixe-me saber se esse não é o caso

Você deve usar o OverlayView e então você pode usar técnicas de MVC para vincular a propriedade de posição do marcador.

function MyOverlay(marker) {
  this.bindTo('position', marker);
}
MyOverlay.prototype = new google.maps.OverlayView();

MyOverlay.prototype.position_changed = function() {
  this.draw();
};

MyOverLay.prototype.draw = function() {
  // This is where you recalculate the latLngToPixel stuff where latLng
  // is this.get('position');
};

Você também precisa implementar o resto da interface OverlayView:. OnAdd e onRemove

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top