私は非常に便利な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で何か別のことをしなければならないでしょうか? 誰かを助けることができますか?
ありがとうございます!それが誰かを助けるかもしれない場合
私の質問は、より多くの「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