Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* $Id$ */
/**
* Common marker routines.
*/
Drupal.gmap.addHandler('gmap', function(elem) {
var obj = this;
obj.bind('init', function() {
if (obj.vars.behavior.autozoom) {
obj.bounds = new GLatLngBounds();
}
});
obj.bind('addmarker',function(marker) {
var m = Drupal.gmap.factory.marker(new GLatLng(marker.latitude,marker.longitude), marker.opts);
marker.marker = m;
GEvent.addListener(m,'click',function() {
obj.change('clickmarker',-1,marker);
});
if (obj.vars.behavior.extramarkerevents) {
GEvent.addListener(m,'mouseover',function() {
obj.change('mouseovermarker',-1,marker);
});
GEvent.addListener(m,'mouseout',function() {
obj.change('mouseoutmarker',-1,marker);
});
GEvent.addListener(m,'dblclick',function() {
obj.change('dblclickmarker',-1,marker);
});
}
/**
* Perform a synthetic marker click on this marker on load.
*/
if (marker.autoclick || (marker.options && marker.options.autoclick)) {
obj.deferChange('clickmarker',-1,marker);
}
if (obj.vars.behavior.autozoom) {
obj.bounds.extend(marker.marker.getPoint());
}
});
// Default marker actions.
obj.bind('clickmarker',function(marker) {
if (marker.text) {
marker.marker.openInfoWindowHtml(marker.text);
}
if (marker.rmt) {
$.get(obj.vars.rmtcallback + '/' + marker.rmt, {}, function(data){
marker.marker.openInfoWindowHtml(data);
});
}
else if (marker.tabs) {
var infoWinTabs = [];
for (var m in marker.tabs) {
infoWinTabs.push(new GInfoWindowTab(m,marker.tabs[m]));
}
marker.marker.openInfoWindowTabsHtml(infoWinTabs);
}
else if (marker.link) {
open(marker.link,'_self');
}
});
obj.bind('markersready', function() {
// If we are autozooming, set the map center at this time.
if (obj.vars.behavior.autozoom) {
if (!obj.bounds.isEmpty()) {
obj.map.setCenter(obj.bounds.getCenter(), Math.min(obj.map.getBoundsZoomLevel(obj.bounds), obj.vars.maxzoom));
}
}
});
obj.bind('clearmarkers', function() {
// Reset bounds if autozooming
// @@@ Perhaps we should have a bounds for both markers and shapes?
if (obj.vars.behavior.autozoom) {
obj.bounds = new GLatLngBounds();
}
});
// @@@ TODO: Some sort of bounds handling for deletemarker? We'd have to walk the whole thing to figure out the new bounds...
});