Я пытаюсь преобразовать очень полезный класс LabeledMarker в API Карт Google V3 .
Я использовал это в своей карте V2 ... но я хочу что-то подобное в моей карте V3.
Я прочитал статью Майка о расширении 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'
});
Вот URL: http://www.canamgroup.ws/GM.nsf/Map2?OpenPage
Мой маркер отображается на карте (поэтому я предполагаю, что мой конструктор успешно вызывает конструктор google.maps.Marker
), но мои предупреждения в onAdd, draw и onRemove никогда не запускаются (поэтому я предполагаю, что мои методы не вызывают успешно google.maps.Marker
методов).
Именно так Майк и делал в 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?
Может кто-нибудь помочь?
Спасибо!