1

我发现了这个在 v2 谷歌地图中扩展 GMarkers 的很棒的教程:http ://www.googlemapsbook.com/2007/01/22/extending-gmarker/

不幸的是,在 v3 中,标记的设置非常不同(例如,您必须传入地图,它将作为参数添加到其中,因此不能有一个独立的 google.maps.Marker 对象作为原型,或者至少在你的地图初始化之后)。

有谁知道如何扩展谷歌地图 v3 标记?

*edit - 结果我错了,地图是必需的参数。我稍后会发布我的 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 回答