1

私はv2グーグルマップでGMarkersを拡張するためのこの素晴らしいチュートリアルを見つけました:http ://www.googlemapsbook.com/2007/01/22/extending-gmarker/

残念ながら、v3では、マーカーの設定が大きく異なります(たとえば、マップを渡す必要があるため、マーカーがパラメーターとして追加されるため、スタンドアロンのgoogle.maps.Markerオブジェクトをプロトタイプとして機能させることはできません。 、または少なくともマップが初期化されるまでは)。

誰かがグーグルマップv3マーカーを拡張する方法を知っていますか?

*編集-マップが必須パラメーターであることが間違っていたことがわかりました。後で回答としてv3拡張機能を投稿し、これをコミュニティの質問としてマークします

4

1 に答える 1

1

以下は私が最終的に使用したものです(カスタムマーカーに使用した多くのコードを削除して、編集を間違えた可能性があるため、必要最低限​​の部分だけを残しました)。newObj()は、コンストラクター関数を使用するのではなく、プロトタイプから新しいオブジェクトを生成するための関数(Douglas Crockfordのコードに基づく)です。

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"
});
于 2011-04-20T09:15:05.863 に答える