/* CK googlemapsEnd v3.6 */ /* global google */ (function(window) { 'use strict'; var initGmapsLoader = window.initGmapsLoader = function(e) { if (e) { var obj = e.target || e.srcElement; if (obj) obj.onclick = null; } if (window.google) { if (window.google.maps && (!window.gmapsGeometry || google.maps.geometry) && (!window.gmapsWeather || google.maps.weather)) { initializeMaps(); return; } if (window.google.load) { google.load('maps', '3', { 'callback':initializeMaps,other_params:'sensor=false' + getMapsLibraries() }); return; } } if (document.getElementById('gmapsLoader')) return; var script = document.createElement('script'); script.src = 'https://maps.googleapis.com/maps/api/js?sensor=false' + getMapsLibraries() + '&callback=initializeMaps'; script.type = 'text/javascript'; script.id = 'gmapsLoader'; document.getElementsByTagName('head')[0].appendChild(script); }; function getMapsLibraries() { var libraries = ''; if (window.gmapsGeometry) libraries = 'geometry'; if (window.gmapsWeather) libraries += ( !libraries ? '' : ',') + 'weather'; if (libraries) libraries = '&libraries=' + libraries; if (window.gmapsKey) libraries += '&key=' + window.gmapsKey; return libraries; } var initializeMaps = window.initializeMaps = function() { if (!Label.prototype.onAdd) InitializeLabels(); window.loadedGMaps = []; for (var i = 0; i < window.gmapsLoaders.length; i++) window.gmapsLoaders[i](); window.gmapsLoaders = []; if (window.onLoadedGMaps) window.onLoadedGMaps(); }; var CKEMap = window.CKEMap = function(div, options) { var allMapTypes = [ google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN ]; var myOptions = { zoom: options.zoom, center: new google.maps.LatLng(options.center[0], options.center[1]), mapTypeId: allMapTypes[ options.mapType ], heading: options.heading, tilt: options.tilt, scaleControl: options.scaleControl, overviewMapControl: options.overviewMapControl, overviewMapControlOptions: options.overviewMapControlOptions }; switch (options.zoomControl) { case 'None': myOptions.zoomControl = false; myOptions.panControl = false; myOptions.streetViewControl = false; myOptions.rotateControl = false; break; case 'Default': myOptions.zoomControl = true; break; case 'Small': myOptions.zoomControl = true; myOptions.zoomControlOptions = { style: google.maps.ZoomControlStyle.SMALL }; break; case 'Full': myOptions.zoomControl = true; myOptions.zoomControlOptions = { style: google.maps.ZoomControlStyle.ZOOM_PAN }; break; } switch (options.mapsControl) { case 'None': myOptions.mapTypeControl = false; break; case 'Default': myOptions.mapTypeControl = true; break; case 'Full': myOptions.mapTypeControl = true; myOptions.mapTypeControlOptions = { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR }; break; case 'Menu': myOptions.mapTypeControl = true; myOptions.mapTypeControlOptions = { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }; break; } this.map = new google.maps.Map(div, myOptions); if (options.weather) { var wopts = { map: this.map }; if (options.weatherUsaUnits) { wopts.temperatureUnits = google.maps.weather.TemperatureUnit.FAHRENHEIT; wopts.windSpeedUnits = google.maps.weather.WindSpeedUnit.MILES_PER_HOUR; } new google.maps.weather.WeatherLayer( wopts ); } /* old version*/ if (options.traffic) { this.pathsLayer = new google.maps.TrafficLayer(); this.pathsLayer.setMap( this.map ); } if (options.transit) { this.pathsLayer = new google.maps.TransitLayer(); this.pathsLayer.setMap( this.map ); } /* new version*/ switch (options.pathType) { case 'Default': break; case 'Traffic': this.pathsLayer = new google.maps.TrafficLayer(); this.pathsLayer.setMap( this.map ); break; case 'Transit': this.pathsLayer = new google.maps.TransitLayer(); this.pathsLayer.setMap( this.map ); break; case 'Bicycle': this.pathsLayer = new google.maps.BicyclingLayer(); this.pathsLayer.setMap( this.map ); break; } window.loadedGMaps.push(this); if (options.panorama) { var pan = options.panorama; var panorama = this.map.getStreetView(); panorama.setVisible(true); panorama.setPov( { heading: pan.pov1, pitch: pan.pov2, zoom: pan.pov3 }); panorama.setPosition( new google.maps.LatLng(pan.lat, pan.lng) ); } return this; }; CKEMap.prototype.AddMarkers = function(aPoints) { function getIcon(marker) { var data = window.googleMaps_Icons && window.googleMaps_Icons[ marker.color ]; if (!data) return { url:'https://maps.gstatic.com/mapfiles/ms/micons/' + marker.color + '-dot.png' }; return { url:data.marker.image }; } function getShadow(marker) { var data = window.googleMaps_Icons && window.googleMaps_Icons[ marker.color ]; if (!data) { return new google.maps.MarkerImage('https://maps.gstatic.com/mapfiles/ms/micons/msmarker.shadow.png', null, null, new google.maps.Point(15, 32)); } if (!data.shadow || !data.shadow.image) return null; return new google.maps.MarkerImage(data.shadow.image); } function createMarker(map, data) { var clickable = !!data.text, point = new google.maps.LatLng(data.lat, data.lon), marker = new google.maps.Marker( { position:point, map:map, title:data.title, icon: getIcon(data), clickable:clickable }); var shadow = getShadow(data); if (shadow) marker.setShadow(shadow); if (data.title) new Label({ position:point, text:marker.title, map:map }); if (clickable) google.maps.event.addListener(marker, 'click', function() { if (!marker._infoWindow) marker._infoWindow = new google.maps.InfoWindow({ content: '