geolocation-8.x-3.x-dev/modules/geolocation_google_maps/js/LayerFeature/GoogleMarkerClusterer.js

modules/geolocation_google_maps/js/LayerFeature/GoogleMarkerClusterer.js
import { GoogleLayerFeature } from "./GoogleLayerFeature.js";

/**
 * @typedef {Object} MarkerClustererSettings
 *
 * @extends {GeolocationMapFeatureSettings}
 *
 * @prop {String} image_path
 * @prop {Object} styles
 * @prop {Number} max_zoom
 * @prop {Number} grid_size
 * @prop {Boolean} zoom_on_click
 * @prop {Number} average_center
 * @prop {Number} minimum_cluster_size
 */

/* global markerClusterer */

/**
 * @prop {MarkerClustererSettings} settings
 */
export default class GoogleMarkerClusterer extends GoogleLayerFeature {
  constructor(settings, layer) {
    super(settings, layer);

    if (typeof markerClusterer === "undefined") {
      throw new Error("MarkerCluster not found");
    }

    this.markerClusterer = new markerClusterer.MarkerClusterer({
      map: this.layer.map.googleMap,
    });
  }

  onMarkerAdded(marker) {
    super.onMarkerAdded(marker);

    this.markerClusterer.addMarker(marker.googleMarker);
  }

  onMarkerRemove(marker) {
    super.onMarkerRemove(marker);

    this.markerClusterer.removeMarker(marker.googleMarker);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc