我发现了在v2谷歌地图中扩展GMarkers的一个很棒的教程:http://www.googlemapsbook.com/2007/01/22/extending-gmarker/
不幸的是,在v3中,标记的设置是非常不同的(例如,你必须传入一个地图,它将被添加到一个参数中,所以不能有一个独立的google.maps.Marker对象作为原型,或者至少在你的地图初始化之后)。
有人知道如何扩展谷歌地图的v3标记吗?
*edit -事实证明,我错了,地图是必需的参数。稍后我会将我的v3扩展作为答案发布,并将其标记为社区问题
发布于 2011-04-20 17:15:06
下面是我最终使用的代码(我已经去掉了很多用于自定义标记的代码,只留下了最基本的部分,所以我可能在编辑时犯了一个错误)。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"
});https://stackoverflow.com/questions/4401337
复制相似问题