2010-11-24 13 views
5

私は非常に便利なLabeledMarker class to Google Maps API V3を変換しようとしています。 私のV2マップで使用しましたが、私のV3マップで似たものが欲しいです。 GMarkerを拡張する方法についてはMike's articleと書かれています。Google Maps API V3 - サブクラスgoogle.maps.Marker:親メソッドを呼び出す方法

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

は、ここにURLだ:http://www.canamgroup.ws/GM.nsf/Map2?OpenPage

私のマーカーが地図上に表示(私が想定しています私のコンストラクタがgoogle.maps.Markerコンストラクタを呼び出すのに成功していますが、onAdd、drawおよびonRemoveの警告は決してトリガされません(私のメソッドはメソッドを呼び出すことに成功しました)。

これは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で何か別のことをしなければならないでしょうか? 誰かを助けることができますか?

ありがとうございます!それが誰かを助けるかもしれない場合

+0

私の質問は、より多くの「onAddを上書きする方法()、描くこと()とGoogleのonRemove()メソッド必要があります。 maps.Maker? " "setTitle"メソッドでテストを行い、警告が表示され、親メソッドが呼び出されました。 LabeledMarker.prototype.setTitle = function(title){ alert( 'setTitle'); google.maps.Marker.prototype.setTitle.apply(this、arguments); } これは、google.maps.MarkerにonAdd()、draw()、およびonRemove()メソッドがないことを意味しますか? マーカーはオーバーレイなので、私はこれらのメソッドもオーバーライドできると思っていました。 私は何か不可能なことをしようとしていますか? ありがとう! – Canam

答えて

関連する問題