Comment mettre à jour pixelPosition d'un infoWindows personnalisés sur Google Maps V3 après avoir fait glisser?

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

Question

Je crée un nouveau mashup sur le dessus de Google Maps. Il est assez simple que j'ai choisi d'utiliser V3 pour fournir une plus longue durée.

Cependant, il y a des besoins particuliers que Google Maps InfoWindow ne fournit pas.

Je l'ai positionné mon InfoWindow personnalisé avec marker.projectionContainer.pixelPosition. Je reçois position correcte après le zoom, mais traînage ne met pas à jour des marqueurs pixelPosition. Comment puis-je obtenir la différence entre les marqueurs ancienne position et nouveau après glisser?

et

Dois-je utiliser OverlayView au lieu d'essayer de pirater la position de DOM? Je pense que infoWindows propres sont automatiquement mis à jour / garés sur des panneaux de cartes.

Était-ce utile?

La solution

Cette réponse suppose que par glisser-vous dire en faisant glisser le marqueur et non en faisant glisser la carte, laissez-moi savoir si ce n'est pas le cas

Vous devez utiliser le OverlayView et vous pouvez utiliser des techniques MVC pour se lier à la propriété de la position du marqueur.

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');
};

Vous devez également mettre en œuvre le reste de l'interface OverlayView. OnAdd et onRemove

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top