Расширение google.maps.Marker - PullRequest
       12

Расширение google.maps.Marker

1 голос
/ 09 декабря 2010

Я нашел этот замечательный учебник по расширению GMarkers в v2 google maps: http://www.googlemapsbook.com/2007/01/22/extending-gmarker/

К сожалению, в v3 настройка маркера сильно отличается (например, вы должны пройти по карте, он будетбыть добавлен в качестве параметра, поэтому не может иметь отдельный объект google.maps.Marker, который будет выступать в качестве прототипа, или, по крайней мере, до тех пор, пока ваша карта не будет инициализирована).

Кто-нибудь знает, как расширитьмаркер google maps v3?

* edit - оказывается, я ошибся, считая карту обязательным параметром.Позже я опубликую расширение v3 в качестве ответа и отмечу это как вопрос сообщества

1 Ответ

1 голос
/ 20 апреля 2011

Ниже приведено то, что я в конечном итоге использовал (я убрал много кода, который я использовал для своего пользовательского маркера, чтобы оставить только голые кости, чтобы я мог ошибиться при редактировании). newObj () - это функция (основанная на коде Дугласа Крокфорда) для генерации нового объекта из прототипа вместо использования функции конструктора.

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"
});
...