2010-12-09 53 views
1

Je trouve ce grand tutoriel pour l'extension GMarkers v2 dans google maps: http://www.googlemapsbook.com/2007/01/22/extending-gmarker/Extension google.maps.Marker

Malheureusement, v3 la mise en place d'un marqueur est très différent (par exemple, vous devez passer la carte il sera ajouté en tant que paramètre, donc ne peut pas avoir un objet google.maps.Marker autonome pour agir comme un prototype, ou du moins pas avant que votre carte ne soit initialisée).

Est-ce que quelqu'un sait comment étendre un marqueur google maps v3? * Edit - s'avère que j'avais tort sur la carte étant un paramètre obligatoire. Je posterai mon extension v3 comme réponse plus tard et la marquerai comme une question de communauté

Répondre

1

Ci-dessous est ce que j'ai finalement utilisé (j'ai enlevé beaucoup de code que j'ai utilisé pour mon marqueur personnalisé pour laisser juste le nu os donc j'ai peut-être fait une erreur dans le montage). newObj() est une fonction (basée sur le code de Douglas Crockford) pour générer un nouvel objet à partir d'un prototype, plutôt que d'utiliser une fonction constructeur.

function newObj(o) { 
    var params = Array.prototype.slice.call(arguments,1); 
    function F() {} 
    F.prototype = o; 
    var obj = new F(); 
    if(params.length) { 
     obj.init.apply(obj,params); 
    } 
    return obj; 
} 

var MyMarkerProto = function() { 
    var proto = new google.maps.Marker(new google.maps.LatLng(0, 0)); 

    proto.init = function (data) { 
     this.setPosition(new google.maps.LatLng(parseFloat(data.lat), parseFloat(data.lng))); 
    } 
    return proto; 

}(); 

var myMarker = newObj(MyMarkerProto, { 
    lat: 51, 
    lng: 48, 
    otherData: "some other value" 
});