Skip to content
Snippets Groups Projects
clusterer_marker.js 1.29 KiB
Newer Older
Brandon Bergren's avatar
Brandon Bergren committed
 * @file
 * GMap Markers
 * Jef Poskanzer's Clusterer.js API version
 */

Brandon Bergren's avatar
Brandon Bergren committed
/*global Clusterer, Drupal, GMarker */

// Replace to override marker creation
Brandon Bergren's avatar
Brandon Bergren committed
Drupal.gmap.factory.marker = function (loc, opts) {
  return new GMarker(loc, opts);
Brandon Bergren's avatar
Brandon Bergren committed
Drupal.gmap.addHandler('gmap', function (elem) {
  var obj = this;

Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('init', function () {
    obj.clusterer = new Clusterer(obj.map);
    var s = Drupal.settings.gmap_markermanager;
    if (s) {
      obj.clusterer.SetMaxVisibleMarkers(s.max_nocluster);
      obj.clusterer.SetMinMarkersPerCluster(s.cluster_min);
      obj.clusterer.SetMaxLinesPerInfoBox(s.max_lines);
    }
  });

Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('iconsready', function () {
    var s = Drupal.settings.gmap_markermanager;
    if (s) {
Brandon Bergren's avatar
Brandon Bergren committed
      obj.clusterer.SetIcon(Drupal.gmap.getIcon(s.marker, 0));
Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('addmarker', function (marker) {
    var t = '';
    if (marker.opts.title) {
      t = marker.opts.title;
      if (marker.link) {
        t = '<a href="' + marker.link + '">' + t + '</a>';
      }
    }
Brandon Bergren's avatar
Brandon Bergren committed
    obj.clusterer.AddMarker(marker.marker, t);
Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('delmarker', function (marker) {
    obj.clusterer.RemoveMarker(marker.marker);
  });

Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('clearmarkers', function () {
    // @@@ Maybe don't nuke ALL overlays?
    obj.map.clearOverlays();
  });
});