2010-11-24 7 views
5

Ich versuche, das sehr nützliche LabeledMarker class to Google Maps API V3 zu konvertieren. Ich habe es in meiner V2 Karte benutzt ... aber ich möchte etwas ähnliches in meiner V3 Karte. Ich lese Mike's article über Verlängerung GMarker.Google Maps API V3 - Unterklasse google.maps.Marker: Wie Elternmethoden aufrufen?

Ich versuche, das selbe mit google.maps.Marker zu tun, aber ich laufe auf einige Probleme.

Hier ist mein sehr einfacher Code:

function LabeledMarker(opts) { // constructor 
    google.maps.Marker.apply(this, arguments); 
} 

LabeledMarker.prototype = new google.maps.Marker(); 

LabeledMarker.prototype.onAdd = function() { 
    alert('onAdd1'); 
    google.maps.Marker.prototype.onAdd.apply(this, arguments);  
    alert('onAdd2'); 
} 

LabeledMarker.prototype.draw = function() { 
    alert('draw1'); 
    google.maps.Marker.prototype.draw.apply(this, arguments); 
    alert('draw2'); 
} 

LabeledMarker.prototype.onRemove = function() { 
    alert('onRemove1'); 
    google.maps.Marker.prototype.onRemove.apply(this, arguments); 
    alert('onRemove2'); 
} 

Hier ist, wie ich es nennen:

var point = new google.maps.LatLng(37, -59); 
var labeledMarker = new LabeledMarker({ 
    map: map, 
    position: point, 
    labelText: 'Label' 
}); 

Hier ist eine URL: http://www.canamgroup.ws/GM.nsf/Map2?OpenPage

Meine Markierung auf der Karte angezeigt wird (so nehme ich an dass mein Konstruktor erfolgreich den google.maps.Marker Konstruktor aufruft), aber meine Alerts in onAdd, draw und onRemove werden niemals ausgelöst (also nehme ich an, dass meine Methoden dies nicht sind) erfolgreich die Methoden google.maps.Marker aufrufen).

Dies ist die Art, wie Mike es in V2 tat (außer die Methodennamen waren unterschiedlich). Ich habe versucht:

google.maps.Marker.prototype.draw.apply(this, arguments); 
google.maps.Marker.prototype.draw.apply(this); 
google.maps.Marker.prototype.draw.call(this); 
google.maps.Marker.prototype.draw.call(this, arguments); 

Ich bin erst am Anfang OO Javascript-Code, so dass ich vielleicht etwas fehlen? Oder muss ich vielleicht etwas anderes in V3 machen? Kann jemand helfen?

Danke!

+0

Meine Frage sollte sein: „Wie die onAdd() außer Kraft zu setzen, ziehen() und onRemove() Methoden von Google. maps.Maker? ". Ich habe einen Test mit der "setTitle" -Methode durchgeführt und meine Warnung wird angezeigt (und die übergeordnete Methode aufgerufen): LabeledMarker.prototype.setTitle = Funktion (Titel) { alert ('setTitle'); google.maps.Marker.prototype.setTitle.apply (this, Argumente); } Bedeutet das, dass google.maps.Marker keine Methoden onAdd(), draw() und onRemove() hat? Ein Marker ist ein Overlay, also dachte ich, ich könnte diese Methoden ebenfalls außer Kraft setzen. Mache ich etwas Unmögliches? Danke! – Canam

Antwort

1
+0

Leider funktioniert dieser Link nicht. Aber denken Sie, dass dies das Thema ist, auf das verwiesen wird: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/DhW0pI54WdM - es wurde noch nicht überprüft und nur der Link angegeben – barryhunter