我发现这个很棒的教程可以在v2谷歌地图中扩展GMarkers:http://www.googlemapsbook.com/2007/01/22/extending-gmarker/
不幸的是,在第3版中,标记的设置是非常不同的(例如,您必须传入地图,它将被添加为参数,因此无法使用独立的google.maps.Marker对象进行操作作为原型,或者至少在地图初始化之后才开始。)
有谁知道如何扩展谷歌地图v3标记?
*编辑 - 事实证明我错误地将地图作为必需参数。我稍后会将我的v3扩展名作为回答发布,并将其标记为社区问题
答案 0 :(得分: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"
});