Google Maps Version 3 OverlayView.getProjection ()

7

Ich kann nicht herausfinden, warum das von getProjection () zurückgegebene Objekt nicht definiert ist. Hier ist mein Code:

%Vor%

Mein Fehler ist: Die Methode 'fromLatLngToContainerPixel' von undefined

kann nicht aufgerufen werden     
Arlo Carreon 14.09.2010, 16:12
quelle

2 Antworten

26

Der Grund dafür ist, dass das Projektionsobjekt erstellt wird, nachdem die Karte nach dem Verschieben / Zoomen leer ist. Eine bessere Lösung besteht also darin, auf das idle -Ereignis des google.maps.Map -Objekts zu hören und einen Verweis auf die Projektion dort zu erhalten:

%Vor%     
Mihai Tomescu 11.07.2011, 23:04
quelle
2

Ich habe herausgefunden, was los ist. Obwohl es immer noch nicht klar ist, warum dies passiert, weiß ich, dass ich die Variable "overlay" direkt nach der Instanziierung meiner Google Map (HAR.map) instanziieren musste. Also habe ich dieses Code-Snippet praktisch in meine HAR-Klasse verschoben und verwende jetzt:

%Vor%

So, jetzt, jedes Mal, wenn ich eine Karte über meine Klasse "HAR" erstellen, habe ich auch ein paralleles OverlayView-Objekt innerhalb meiner Klasse.

Der Fehler könnte mit dem Verlust des Bereichs meines Klassenobjekts verbunden sein, aber ich denke, es wurde mehr vom Kartenereignis "projection_changed" nicht ausgelöst. Ich habe einen Hinweis von der Karten-API-Dokumentation für die Kartenklasse unter der Methode getProjection ():

erhalten

" Gibt die aktuelle Projektion zurück. Wenn die Karte noch nicht initialisiert ist (z. B. mapType ist immernoch null), dann ist das Ergebnis null. Hören Sie projection_changed und prüfen Sie seinen Wert, um sicherzustellen, dass es nicht null ist. "

Wenn das ähnliche Problem auftritt, vergewissern Sie sich, dass Sie Ihr overlayVIEW.setMAP (YOUR_MAP_OBJECT) genau nach dem Instanziieren des Kartenobjekts zuweisen.

    
Arlo Carreon 14.09.2010 18:46
quelle