Google Maps v3 OverlayView.getProjection()
Je n'arrive pas à comprendre pourquoi l'objet renvoyé par getProjection() n'est pas défini. Voici mon code:
//Handles the completion of the rectangle
var ne = recBounds.getNorthEast();
var sw = recBounds.getSouthWest();
$("#map_tools_selat").attr( 'value', sw.lat() );
$("#map_tools_nwlat").attr( 'value', ne.lat() );
$("#map_tools_selng").attr( 'value', ne.lng() );
$("#map_tools_nwlng").attr( 'value', sw.lng() );
//Set Zoom Level
$("#map_tools_zoomlevel").attr( 'value', HAR.map.getZoom()+1 );
document.getElementById("map_tools_centerLat").value = HAR.map.getCenter().lat();
document.getElementById("map_tools_centerLong").value = HAR.map.getCenter().lng();
//All this junk below is for getting pixel coordinates for a lat/lng =/
MyOverlay.prototype = new google.maps.OverlayView();
MyOverlay.prototype.onAdd = function() { }
MyOverlay.prototype.onRemove = function() { }
MyOverlay.prototype.draw = function() { }
function MyOverlay(map) { this.setMap(map); }
var overlay = new MyOverlay(HAR.map);
var projection = overlay.getProjection();
//END - all the junk
var p = projection.fromLatLngToContainerPixel(recBounds.getCenter());
alert(p.x+", "+p.y);
Mon erreur est: Ne peut pas appeler la méthode 'fromLatLngToContainerPixel' undefined
BTW: j'ai collé le jquery partie pour montrer que ma carte objet (HAR.de la carte) ne fonctionne pas. J'ai confirmé à plusieurs reprises que les getCenter() et getZoom() la fonction sont en fait retour des valeurs propres. De sorte que le RSA.map l'objet est légitime.
OriginalL'auteur Arlo Carreon | 2010-09-14
Vous devez vous connecter pour publier un commentaire.
En fait, j'ai la raison pour laquelle cela se produit est que la projection de l'objet est créé après que la carte est en veille après un panoramique, un zoom. Donc, la meilleure solution est de les écouter sur le ralenti cas de la google.cartes.Carte objet, et obtenir une référence à la projection:
Tout simplement sauvé ma journée
OriginalL'auteur Mihai Tomescu
J'ai un peu compris ce qui se passait. Même si elle n'est pas encore limpide pourquoi cela se produit, je sais que j'ai eu pour instancier la variable "superposition" juste après l'instanciation de ma carte google (HAR.carte). J'ai donc pratiquement déplacé que l'extrait de code dans mon HAR classe et maintenant j'utilise:
Alors maintenant, chaque fois que je créer une carte par l'intermédiaire de ma classe "HAR" j'ai aussi un parallèle OverlayView objet au sein de ma classe.
L'Erreur aurait été de perdre de la portée de ma classe de l'objet, mais je pense que c'était plus de la carte de l'événement "projection_changed" pas de feu. J'ai eu une pointe à partir de la carte de l'API documents pour la classe map, en vertu de la méthode getProjection():
"Retourne la Projection. Si la carte n'est pas encore initialisée (c'est à dire le type de correspondance est toujours null), alors le résultat est null. Écouter projection_changed et vérifier sa valeur pour s'assurer qu'il n'est pas null."
Si vous obtenez le même problème, assurez-vous que vous attribuez à votre overlayView.setMAP( YOUR_MAP_OBJECT ) de près, après l'instanciation de l'objet map.
Np. Heureux, il a aidé.
OriginalL'auteur Arlo Carreon