-
Brandon Bergren authoredBrandon Bergren authored
gmap.js 13.25 KiB
/* $Id$ */
/**
* Drupal to Google Maps API bridge.
*/
// GMap overseer singleton
Drupal.gmap = new function() {
var _handlers = {};
var _maps = {};
/**
* Retrieve a map object for use by a non-widget.
* Use this if you need to be able to fire events against a certain map
* which you have the mapid for.
* Be a good GMap citizen! Remember to send change()s after modifying variables!
*/
this.getMap = function(mapid) {
return _maps[mapid];
};
this.addHandler = function(handler,callback) {
if (!_handlers[handler]) {
_handlers[handler] = [];
}
_handlers[handler].push(callback);
};
this.globalChange = function(name,userdata) {
for (var mapid in Drupal.settings.gmap) {
_maps[mapid].change(name,-1,userdata);
}
};
this.setup = function() {
if (Drupal.settings && Drupal.settings.gmap) {
for (var mapid in Drupal.settings.gmap) {
_maps[mapid] = new Drupal.gmap.map(Drupal.settings.gmap[mapid]);
for (var control in _handlers) {
var s = 0;
do {
var o = $('#gmap-'+mapid+'-'+control+s);
o.each(function() {
for (var i=0; i<_handlers[control].length; i++) {
_handlers[control][i].call(_maps[mapid],this);
}
});
s++;
}
while (o.length>0);
}
_maps[mapid].change("bootstrap_options",-1);
_maps[mapid].change("boot",-1);
_maps[mapid].change("init",-1);
// Send some changed events to fire up the rest of the initial settings..
_maps[mapid].change("maptypechange",-1);
_maps[mapid].change("controltypechange",-1);
_maps[mapid].change("alignchange",-1);
// Set ready to put the event system into action.
_maps[mapid].ready = true;
_maps[mapid].change("ready",-1);
}
}