2010-11-24 9 views
5

Estoy tratando de convertir el muy útil LabeledMarker class to Google Maps API V3. Lo usé en mi mapa V2 ... pero quiero algo similar en mi mapa V3. Leí Mike's article acerca de extender GMarker.Google Maps API V3: subclase google.maps.Marker: cómo llamar a los métodos principales?

Estoy tratando de hacer lo mismo con google.maps.Marker, pero estoy teniendo algunos problemas.

Aquí está mi código muy simple:

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'); 
} 

Así es como yo lo llamo:

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

Aquí es una dirección URL: http://www.canamgroup.ws/GM.nsf/Map2?OpenPage

Mi marcador se muestra en el mapa (por lo que asumen que mi constructor está llamando con éxito al constructor google.maps.Marker) pero mis alertas en onAdd, draw y onRemove nunca se activan (así que supongo que mis métodos no son llamando con éxito a los métodos google.maps.Marker).

Esta es la forma en que Mike lo estaba haciendo en V2 (excepto que los nombres de los métodos eran diferentes). me trataron:

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); 

estoy empezando a codificar OO Javascript, por lo que podría estar pasando algo? O tal vez tengo que hacer algo diferente en V3? ¿Alguien puede ayudar?

Gracias!

+0

Mi pregunta debería ser más "Cómo reemplazar la onAdd(), dibujar() y métodos onRemove() de Google. maps.Maker? ". Hice una prueba con el método "setTitle" y se muestra mi alerta (y se llama al método principal): LabeledMarker.prototype.setTitle = function (title) { alert ('setTitle'); google.maps.Marker.prototype.setTitle.apply (esto, argumentos); } ¿Eso significa que google.maps.Marker no tiene los métodos onAdd(), draw() y onRemove()? Un marcador es una superposición, así que pensé que podría anular esos métodos también. ¿Estoy tratando de hacer algo imposible? Gracias! – Canam

Respuesta