Comment mettre à jour pixelPosition d'un infoWindows personnalisés sur Google Maps V3 après avoir fait glisser?
-
18-09-2019 - |
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.
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