Google Maps API V3 - подкласс google.maps.Marker: как вызывать родительские методы? - PullRequest
5 голосов
/ 24 ноября 2010

Я пытаюсь преобразовать очень полезный класс 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? Может кто-нибудь помочь?

Спасибо!

1 Ответ

1 голос
/ 25 ноября 2010

В случае, если это может кому-то помочь, здесь идет хорошая дискуссия:
http://code.google.com/apis/maps/documentation/javascript/forum.html?place=topic%2Fgoogle-maps-js-api-v3%2FDhW0pI54WdM%2Fdiscussion

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...