"ist-git@git.uwaterloo.ca:wcms/uw_cfg_common.git" did not exist on "3054d80a7b0b49b96808aa7418f60f45e415c447"
Newer
Older
* GMap Markers
* Jef Poskanzer's Clusterer.js API version
*/
// Replace to override marker creation
Drupal.gmap.factory.marker = function (loc, opts) {
return new GMarker(loc, opts);
obj.clusterer = new Clusterer(obj.map);
var s = Drupal.settings.gmap_markermanager;
if (s) {
Brandon Bergren
committed
obj.clusterer.SetMaxVisibleMarkers(+s.max_nocluster);
obj.clusterer.SetMinMarkersPerCluster(+s.cluster_min);
obj.clusterer.SetMaxLinesPerInfoBox(+s.max_lines);
var s = Drupal.settings.gmap_markermanager;
Brandon Bergren
committed
if (s.marker.length) {
var t = '';
if (marker.opts.title) {
t = marker.opts.title;
if (marker.link) {
t = '<a href="' + marker.link + '">' + t + '</a>';
}
}
obj.clusterer.RemoveMarker(marker.marker);
});
// @@@ Maybe don't nuke ALL overlays?
obj.map.clearOverlays();
});
});
Brandon Bergren
committed
////////////////// Clusterer overrides section //////////////////
// Store original implementations of overridden functions
Clusterer.origFunctions = {};
// Alternate popup code from: http://drupal.org/node/155104#comment-574696
Clusterer.origFunctions.PopUp = Clusterer.PopUp;
Clusterer.PopUp = function (cluster) {
var mode = Drupal.settings.gmap_markermanager.popup_mode;
if (mode === 'orig') {
return Clusterer.origFunctions.PopUp(cluster);
}
else if (mode === 'zoom') {
var bounds = new GLatLngBounds();
for (var k in cluster.markers)
bounds.extend(cluster.markers[k].getPoint());
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var rect = [
sw,
new GLatLng(sw.lat(), ne.lng()),
ne,
new GLatLng(ne.lat(), sw.lng()),
sw
];
var center = bounds.getCenter();
var zoom = cluster.clusterer.map.getBoundsZoomLevel(bounds);
cluster.clusterer.map.setCenter(new GLatLng(+center.lat(), +center.lng()), +zoom);
}
};