Google Maps API V3 - 子类google.maps.Marker:如何调用父方法?

时间:2010-11-24 14:04:41

标签: javascript google-maps

我正在尝试转换非常有用的LabeledMarker class to Google Maps API V3。 我在我的V2地图中使用过它......但是我想在V3地图中找到类似的东西。 我阅读Mike's article关于扩展GMarker的信息。

我正在尝试使用google.maps.Marker,但我遇到了一些问题。

这是我非常简单的代码:

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

以下是我的称呼方式:

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

这是一个网址:http://www.canamgroup.ws/GM.nsf/Map2?OpenPage

My Marker显示在地图上(所以我假设我的构造函数成功调用了google.maps.Marker构造函数)但是onAdd,draw和onRemove中的警报从未被触发(所以我假设我的方法不成功调用google.maps.Marker方法。

这是Mike在V2中的方式(除了方法名称不同)。 我试过了:

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

我刚刚开始编写OO Javascript代码,所以我可能会遗漏一些东西? 或许我必须在V3中做一些不同的事情? 有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)