2009-12-08 3 views
0

Je crée un nouveau mashup sur Google Maps. C'est assez simple que j'ai choisi d'utiliser V3 pour prolonger la durée de vie.Comment faire pour mettre à jour pixelPosition d'une infoWindows personnalisée sur Google Maps V3 après avoir fait glisser?

Cependant, Google Maps infoWindow ne répond pas à certains besoins particuliers.

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

ou

Dois-je utiliser OverlayView au lieu d'essayer de pirater la position de DOM? Je pense que les propres fenêtres d'informations de Maps sont automatiquement mises à jour/parquées sur les panneaux.

Répondre

0

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 lier à la propriété de 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 implémenter le reste de l'interface OverlayView: onAdd et onRemove.

+0

L'hypothèse était juste et à l'époque j'ai utilisé une solution similaire à celle que vous avez fournie. Merci! – aarreoskari

Questions connexes