Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:58:27

0001 GMaps.prototype.drawOverlay = function(options) {
0002   var overlay = new google.maps.OverlayView(),
0003       auto_show = true;
0004 
0005   overlay.setMap(this.map);
0006 
0007   if (options.auto_show != null) {
0008     auto_show = options.auto_show;
0009   }
0010 
0011   overlay.onAdd = function() {
0012     var el = document.createElement('div');
0013 
0014     el.style.borderStyle = "none";
0015     el.style.borderWidth = "0px";
0016     el.style.position = "absolute";
0017     el.style.zIndex = 100;
0018     el.innerHTML = options.content;
0019 
0020     overlay.el = el;
0021 
0022     if (!options.layer) {
0023       options.layer = 'overlayLayer';
0024     }
0025     
0026     var panes = this.getPanes(),
0027         overlayLayer = panes[options.layer],
0028         stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown'];
0029 
0030     overlayLayer.appendChild(el);
0031 
0032     for (var ev = 0; ev < stop_overlay_events.length; ev++) {
0033       (function(object, name) {
0034         google.maps.event.addDomListener(object, name, function(e){
0035           if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {
0036             e.cancelBubble = true;
0037             e.returnValue = false;
0038           }
0039           else {
0040             e.stopPropagation();
0041           }
0042         });
0043       })(el, stop_overlay_events[ev]);
0044     }
0045 
0046     if (options.click) {
0047       panes.overlayMouseTarget.appendChild(overlay.el);
0048       google.maps.event.addDomListener(overlay.el, 'click', function() {
0049         options.click.apply(overlay, [overlay]);
0050       });
0051     }
0052 
0053     google.maps.event.trigger(this, 'ready');
0054   };
0055 
0056   overlay.draw = function() {
0057     var projection = this.getProjection(),
0058         pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng));
0059 
0060     options.horizontalOffset = options.horizontalOffset || 0;
0061     options.verticalOffset = options.verticalOffset || 0;
0062 
0063     var el = overlay.el,
0064         content = el.children[0],
0065         content_height = content.clientHeight,
0066         content_width = content.clientWidth;
0067 
0068     switch (options.verticalAlign) {
0069       case 'top':
0070         el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px';
0071         break;
0072       default:
0073       case 'middle':
0074         el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px';
0075         break;
0076       case 'bottom':
0077         el.style.top = (pixel.y + options.verticalOffset) + 'px';
0078         break;
0079     }
0080 
0081     switch (options.horizontalAlign) {
0082       case 'left':
0083         el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px';
0084         break;
0085       default:
0086       case 'center':
0087         el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px';
0088         break;
0089       case 'right':
0090         el.style.left = (pixel.x + options.horizontalOffset) + 'px';
0091         break;
0092     }
0093 
0094     el.style.display = auto_show ? 'block' : 'none';
0095 
0096     if (!auto_show) {
0097       options.show.apply(this, [el]);
0098     }
0099   };
0100 
0101   overlay.onRemove = function() {
0102     var el = overlay.el;
0103 
0104     if (options.remove) {
0105       options.remove.apply(this, [el]);
0106     }
0107     else {
0108       overlay.el.parentNode.removeChild(overlay.el);
0109       overlay.el = null;
0110     }
0111   };
0112 
0113   this.overlays.push(overlay);
0114   return overlay;
0115 };
0116 
0117 GMaps.prototype.removeOverlay = function(overlay) {
0118   for (var i = 0; i < this.overlays.length; i++) {
0119     if (this.overlays[i] === overlay) {
0120       this.overlays[i].setMap(null);
0121       this.overlays.splice(i, 1);
0122 
0123       break;
0124     }
0125   }
0126 };
0127 
0128 GMaps.prototype.removeOverlays = function() {
0129   for (var i = 0, item; item = this.overlays[i]; i++) {
0130     item.setMap(null);
0131   }
0132 
0133   this.overlays = [];
0134 };