PageSourceSearch

https://africanfossils.org/sites/all/modules/gmap/js/marker.js?t079dz

js africanfossils.org collected 2026-10-02 05:30:57 UTC 5,933 bytes, 154 lines download raw bytes

1/**
2 * @file
3 * Common marker routines.
4 */
5
6/*global jQuery, Drupal, GEvent, GInfoWindowTab, GLatLng, GLatLngBounds */
7
8Drupal.gmap.addHandler('gmap', function (elem) {
9    var obj = this;
10    var infowindow;
11
12    if (obj.vars.styleBubble && obj.vars.styleBubble.enableBubbleStyle == 1) {
13        infowindow = new InfoBubble(obj.vars.styleBubble.styleBubbleOptions);
14    }
15    else {
16        infowindow = new google.maps.InfoWindow();
17    }
18
19    obj.bind('init', function () {
20        if (obj.vars.behavior.autozoom) {
21            obj.bounds = new google.maps.LatLngBounds();
22        }
23    });
24
25    obj.bind('addmarker', function (marker) {
26        marker.opts.position = new google.maps.LatLng(marker.latitude, marker.longitude);
27        marker.opts.map = obj.map;
28        var m = Drupal.gmap.factory.marker(marker.opts);
29        marker.marker = m;
30        google.maps.event.addListener(m, 'click', function () {
31            obj.change('clickmarker', -1, marker);
32        });
33        if (obj.vars.behavior.extramarkerevents) {
34            google.maps.event.addListener(m, 'mouseover', function () {
35                obj.change('mouseovermarker', -1, marker);
36            });
37            google.maps.event.addListener(m, 'mouseout', function () {
38                obj.change('mouseoutmarker', -1, marker);
39            });
40            google.maps.event.addListener(m, 'dblclick', function () {
41                obj.change('dblclickmarker', -1, marker);
42            });
43        }
44        /**
45         * Perform a synthetic marker click on this marker on load.
46         */
47        if (marker.autoclick || (marker.options && marker.options.autoclick)) {
48            obj.deferChange('clickmarker', -1, marker);
49        }
50        if (obj.vars.behavior.autozoom) {
51            obj.bounds.extend(new google.maps.LatLng(marker.latitude, marker.longitude));
52        }
53    });
54
55    // Default marker actions.
56    obj.bind('clickmarker', function (marker) {
57        // Close infowindow if open to prevent multiple windows
58        if (infowindow !== null) {
59            infowindow.close();
60        }
61        if (marker.text) {
62            infowindow.setContent(marker.text);
63            infowindow.open(obj.map, marker.marker);
64        }
65        // Info Window Query / Info Window Offset
66        else if (marker.iwq || (obj.vars.iwq && typeof marker.iwo != 'undefined')) {
67            var iwq, iwo;
68            if (obj.vars.iwq) {
69                iwq = obj.vars.iwq;
70            }
71            if (marker.iwq) {
72                iwq = marker.iwq;
73            }
74            iwo = 0;
75            if (marker.iwo) {
76                iwo = marker.iwo;
77            }
78            // Create a container to store the cloned DOM elements.
79            var el = document.createElement('div');
80            // Clone the matched object, run through the clone, stripping off ids, and move the clone into the container.
81            jQuery(iwq).eq(iwo).clone(false).find('*').removeAttr('id').appendTo(jQuery(el));
82            infowindow.setContent(el);
83            infowindow.open(obj.map, marker.marker);
84        }
85        // AJAX content
86        else if (marker.rmt) {
87            //Immediately add a 'loading' bubble on click while we wait for AJAX
88            infowindow.setContent('<div class="gmap-marker-rmt-loading throbber">Loading</div>');
89            infowindow.open(obj.map, marker.marker);
90
91            var uri = marker.rmt;
92            // If there was a callback, prefix that.
93            // (If there wasn't, marker.rmt was the FULL path.)
94            if (obj.vars.rmtcallback) {
95                uri = Drupal.absoluteUrl(obj.vars.rmtcallback + '/' + marker.rmt);
96            }
97            // @Bevan: I think it makes more sense to do it in this order.
98            // @Bevan: I don't like your choice of variable btw, seems to me like
99            // @Bevan: it belongs in the map object, or at *least* somewhere in
100            // @Bevan: the gmap settings proper...
101            //if (!marker.text && Drupal.settings.loadingImage) {
102            //  marker.marker.openInfoWindowHtml(Drupal.settings.loadingImage);
103            //}
104            jQuery.get(uri, {}, function (data) {
105                infowindow.setContent(data);
106                infowindow.open(obj.map, marker.marker);
107            });
108        }
109        // Tabbed content
110        else if (marker.tabs) {
111            var data = "";
112            //tabs in an infowindow is no longer supported in API ver3.
113            for (var m in marker.tabs) {
114                data += marker.tabs[m];
115            }
116            infowindow.setContent(data);
117            infowindow.open(obj.map, marker.marker);
118        }
119        // No content -- marker is a link
120        else if (marker.link) {
121            open(marker.link, '_self');
122        }
123    });
124
125    obj.bind('markersready', function () {
126        // If we are autozooming, set the map center at this time.
127        if (obj.vars.behavior.autozoom) {
128            if (!obj.bounds.isEmpty()) {
129                obj.map.fitBounds(obj.bounds);
130                var listener = google.maps.event.addListener(obj.map, "idle", function () {
131                    if (obj.vars.maxzoom) {
132                        var maxzoom = parseInt(obj.vars.maxzoom);
133                        if (obj.map.getZoom() > maxzoom) obj.map.setZoom(maxzoom);
134                        google.maps.event.removeListener(listener);
135                    }
136                });
137            }
138        }
139    });
140
141    obj.bind('clearmarkers', function () {
142        // Reset bounds if autozooming
143        // @@@ Perhaps we should have a bounds for both markers and shapes?
144        if (obj.vars.behavior.autozoom) {
145            obj.bounds = new google.maps.LatLngBounds();
146        }
147    });
148
149    Drupal.gmap.getInfoWindow = function () {
150        return infowindow;
151    };
152
153    // @@@ TODO: Some sort of bounds handling for deletemarker? We'd have to walk the whole thing to figure out the new bounds...
154});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.