Back to home page

EIC code displayed by LXR

 
 

    


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

0001 GMaps.prototype.createMarker = function(options) {
0002   if (options.lat == undefined && options.lng == undefined && options.position == undefined) {
0003     throw 'No latitude or longitude defined.';
0004   }
0005 
0006   var self = this,
0007       details = options.details,
0008       fences = options.fences,
0009       outside = options.outside,
0010       base_options = {
0011         position: new google.maps.LatLng(options.lat, options.lng),
0012         map: null
0013       },
0014       marker_options = extend_object(base_options, options);
0015 
0016   delete marker_options.lat;
0017   delete marker_options.lng;
0018   delete marker_options.fences;
0019   delete marker_options.outside;
0020 
0021   var marker = new google.maps.Marker(marker_options);
0022 
0023   marker.fences = fences;
0024 
0025   if (options.infoWindow) {
0026     marker.infoWindow = new google.maps.InfoWindow(options.infoWindow);
0027 
0028     var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed'];
0029 
0030     for (var ev = 0; ev < info_window_events.length; ev++) {
0031       (function(object, name) {
0032         if (options.infoWindow[name]) {
0033           google.maps.event.addListener(object, name, function(e){
0034             options.infoWindow[name].apply(this, [e]);
0035           });
0036         }
0037       })(marker.infoWindow, info_window_events[ev]);
0038     }
0039   }
0040 
0041   var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed'];
0042 
0043   var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup'];
0044 
0045   for (var ev = 0; ev < marker_events.length; ev++) {
0046     (function(object, name) {
0047       if (options[name]) {
0048         google.maps.event.addListener(object, name, function(){
0049           options[name].apply(this, [this]);
0050         });
0051       }
0052     })(marker, marker_events[ev]);
0053   }
0054 
0055   for (var ev = 0; ev < marker_events_with_mouse.length; ev++) {
0056     (function(map, object, name) {
0057       if (options[name]) {
0058         google.maps.event.addListener(object, name, function(me){
0059           if(!me.pixel){
0060             me.pixel = map.getProjection().fromLatLngToPoint(me.latLng)
0061           }
0062           
0063           options[name].apply(this, [me]);
0064         });
0065       }
0066     })(this.map, marker, marker_events_with_mouse[ev]);
0067   }
0068 
0069   google.maps.event.addListener(marker, 'click', function() {
0070     this.details = details;
0071 
0072     if (options.click) {
0073       options.click.apply(this, [this]);
0074     }
0075 
0076     if (marker.infoWindow) {
0077       self.hideInfoWindows();
0078       marker.infoWindow.open(self.map, marker);
0079     }
0080   });
0081 
0082   google.maps.event.addListener(marker, 'rightclick', function(e) {
0083     e.marker = this;
0084 
0085     if (options.rightclick) {
0086       options.rightclick.apply(this, [e]);
0087     }
0088 
0089     if (window.context_menu[self.el.id]['marker'] != undefined) {
0090       self.buildContextMenu('marker', e);
0091     }
0092   });
0093 
0094   if (marker.fences) {
0095     google.maps.event.addListener(marker, 'dragend', function() {
0096       self.checkMarkerGeofence(marker, function(m, f) {
0097         outside(m, f);
0098       });
0099     });
0100   }
0101 
0102   return marker;
0103 };
0104 
0105 GMaps.prototype.addMarker = function(options) {
0106   var marker;
0107   if(options.hasOwnProperty('gm_accessors_')) {
0108     // Native google.maps.Marker object

0109     marker = options;
0110   }
0111   else {
0112     if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) {
0113       marker = this.createMarker(options);
0114     }
0115     else {
0116       throw 'No latitude or longitude defined.';
0117     }
0118   }
0119 
0120   marker.setMap(this.map);
0121 
0122   if(this.markerClusterer) {
0123     this.markerClusterer.addMarker(marker);
0124   }
0125 
0126   this.markers.push(marker);
0127 
0128   GMaps.fire('marker_added', marker, this);
0129 
0130   return marker;
0131 };
0132 
0133 GMaps.prototype.addMarkers = function(array) {
0134   for (var i = 0, marker; marker=array[i]; i++) {
0135     this.addMarker(marker);
0136   }
0137 
0138   return this.markers;
0139 };
0140 
0141 GMaps.prototype.hideInfoWindows = function() {
0142   for (var i = 0, marker; marker = this.markers[i]; i++){
0143     if (marker.infoWindow) {
0144       marker.infoWindow.close();
0145     }
0146   }
0147 };
0148 
0149 GMaps.prototype.removeMarker = function(marker) {
0150   for (var i = 0; i < this.markers.length; i++) {
0151     if (this.markers[i] === marker) {
0152       this.markers[i].setMap(null);
0153       this.markers.splice(i, 1);
0154 
0155       if(this.markerClusterer) {
0156         this.markerClusterer.removeMarker(marker);
0157       }
0158 
0159       GMaps.fire('marker_removed', marker, this);
0160 
0161       break;
0162     }
0163   }
0164 
0165   return marker;
0166 };
0167 
0168 GMaps.prototype.removeMarkers = function (collection) {
0169   var new_markers = [];
0170 
0171   if (typeof collection == 'undefined') {
0172     for (var i = 0; i < this.markers.length; i++) {
0173       var marker = this.markers[i];
0174       marker.setMap(null);
0175 
0176       if(this.markerClusterer) {
0177         this.markerClusterer.removeMarker(marker);
0178       }
0179 
0180       GMaps.fire('marker_removed', marker, this);
0181     }
0182     
0183     this.markers = new_markers;
0184   }
0185   else {
0186     for (var i = 0; i < collection.length; i++) {
0187       var index = this.markers.indexOf(collection[i]);
0188 
0189       if (index > -1) {
0190         var marker = this.markers[index];
0191         marker.setMap(null);
0192 
0193         if(this.markerClusterer) {
0194           this.markerClusterer.removeMarker(marker);
0195         }
0196 
0197         GMaps.fire('marker_removed', marker, this);
0198       }
0199     }
0200 
0201     for (var i = 0; i < this.markers.length; i++) {
0202       var marker = this.markers[i];
0203       if (marker.getMap() != null) {
0204         new_markers.push(marker);
0205       }
0206     }
0207 
0208     this.markers = new_markers;
0209   }
0210 };