Как подружить OverlayView и MarkerClusterer?

320
12 мая 2017, 17:00

В одном проекте потребовалось сделать свой HTML маркеры которые реализованы совершенно стандартным кодом который выдает гугл при гуглении, вот успрщенная версия того, что я использую:

function MyMarker(marker) {
    this.latLng = new google.maps.LatLng(marker.lat, marker.lng);
    this.content = '<img src="' + marker.avatar + '"><span>' + marker.name + '</span>';
    this.click = function() {
        document.location = '/group/' + marker.groupUrlName;
    };
    this.setMap(GoogleMap);
}
MyMarker.prototype = new google.maps.OverlayView();
MyMarker.prototype.draw = function() {
    var self = this;
    var div = this.div_;
    if (!div) {
        div = this.div_ = document.createElement('div');
        div.className = 'map-marker';
        div.innerHTML = this.content;
        google.maps.event.addDomListener(div, "click", function(event) {
            google.maps.event.trigger(self, "click");
            self.click();
        });
        this.getPanes().overlayImage.appendChild(div);
    }
    var point = this.getProjection().fromLatLngToDivPixel(this.latLng);
    if (point) {
        div.style.left = point.x - 50 + 'px';
        div.style.top = point.y - 100 - 10 + 'px';
    }

Ко всему этому мне понадобилась ещё и кластеризация, и вот тут возникли проблемы, как их совместить?

READ ALSO
input file multiple кроссбраузерно

input file multiple кроссбраузерно

Как сделать input type='file' multiple так, чтоб он работал c ie9?

226
Альтернатива alert в JS

Альтернатива alert в JS

Нужно выводить текст на экран не во всплывающем окне, а именно в виде текста, как, например echo в PHP или < p >Текст< /p > в HTMLКто знает решение?

443
Jquery выводит одно и тоже несколько раз

Jquery выводит одно и тоже несколько раз

Выводит информацию одну и туже несколько раз в место одного, непонятно из за чего?

315
Angular 2-4 перезагрузить теплейт

Angular 2-4 перезагрузить теплейт

Как в ангуляре перезагрузить темплейт, который рендерится на сервере? Пытался использовать

296