$.extend({ hotelsList: new function () { var _self = this; var _markerList = []; var _labels = null; var _urls = null; var _map = null; var countryRestrict = {'country': 'cu'}; var imageUrl = ''; var path = ''; var _zoom = 12; var _clustering = true; _self.initialize = function (container) { if($(".chargeMapOnLoad").length>0){ _clustering = false; //_zoom = parseInt(container.attr("zoom")); _loadMap(container); }else{ $('.seemap').click(function(){ _loadMap(container); }); if($("#map", container).is(':visible')===true && !$('#map-canvas', container).hasClass('loaded')){ _loadMap(container); }; } //Resize Function google.maps.event.addDomListener(window, "resize", function() { if(_map) { var center = _map.getCenter(); google.maps.event.trigger(_map, "resize"); _map.setCenter(center); } }); } var _loadMap = function(container){ var _params = {}; var mapCanvas = $('#map-canvas', container); var _poloId = $('#map-canvas', container).attr('codpolo'); _params.polos = _poloId; imageUrl = $('#map-canvas', container).attr('pin'); path = $('#map-canvas', container).attr('path'); if($('#map-canvas', container).attr('hoteles')!=""){ _params.hoteles = new Array($('#map-canvas', container).attr('hoteles')); } if (mapCanvas.length > 0 && !$('#map-canvas', container).hasClass('loaded')) { $("#map", container).addClass('loader'); $.ajax({ type: "POST", url: mapCanvas.attr('mapServiceUrl'), data: JSON.stringify(_params), cache: false, dataType: 'json', success: function(data) { _markerList = data.content.hotels; _labels = data.content.labels; _urls = data.content.urls; if (data.content.pole != null){ var _center = new google.maps.LatLng(data.content.pole.lat, data.content.pole.lng); }else var _center = new google.maps.LatLng(data.content.cuba.lat, data.content.cuba.lng); if (_markerList.length == 1){ var _center = new google.maps.LatLng(_markerList[0].lat, _markerList[0].lng); _zoom=18; } _updateMap(mapCanvas, _center, _zoom, container); $("#map>div:first-child").addClass('animated slideInDown'); }, complete: function(){ mapCanvas.addClass('loaded'); $("#map", container).removeClass('loader'); //var center = _map.getCenter(); //google.maps.event.trigger(_map, "resize"); if($('.mg-space-open').length>0)$('.mg-space-open').height($('.mg-target-open').height()+50+'px'); if($("#over_map").length>0) $("#over_map").show(); //google.maps.event.trigger(_map, "resize"); } }); } }; var _updateMap = function (mapCanvas, center, zoom, container) { var template = ''; //var mapElem = $(".gmap").find("#map")[0]; var mapElem = container.find("#map")[0]; _map = new google.maps.Map(mapElem, { center: center, zoom:zoom, //mapTypeId: google.maps.MapTypeId.ROADMAP, scrollwheel: false, keyboardShortcuts: true, //Habilita e inabilita el uso del teclado (default: true) panControl: true, disableDefaultUI: false }); //console.log(zoom); var bounds = new google.maps.LatLngBounds(); var infowindow = new google.maps.InfoWindow(); var markers = []; if(_markerList.length>0){ for (var i = 0;i < _markerList.length;i++) { var _marker = _markerList[i]; var position = new google.maps.LatLng(_marker.lat, _marker.lng); var infowindow = new google.maps.InfoWindow({ content: _getMarkerContent(_marker) }); var markerObj = new google.maps.Marker({ position: position, map: _map, title: _marker.nomhotCorto, //icon: { url: imageUrl, scaledSize: new google.maps.Size(32, 32), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(0, 32) }, icon: {url:imageUrl,size: new google.maps.Size(22,30),origin: new google.maps.Point(0, 0),anchor: new google.maps.Point(0, 30)}, info: _getMarkerContent(_marker) }); bounds.extend(markerObj.position); google.maps.event.addListener( markerObj, 'click', function() { infowindow.setContent( this.info ); infowindow.open( _map, this ); }); markers.push(markerObj); // Automatically center the map fitting all markers on the screen //_map.setCenter(bounds.getCenter()); } if(_markerList.length>1) _map.fitBounds(bounds); } if(_clustering){ var size = 50; var clusterStyles = [ { textColor: 'white', url: path+'/m1.png', height: 50, width: 50 }, { textColor: 'white', url: path+'/m1.png', height: 50, width: 50 }, { textColor: 'white', url: path+'/m1.png', height: 50, width: 50 } ]; var mcOptions = { gridSize: size, styles: clusterStyles, maxZoom: 16 }; var markerCluster = new MarkerClusterer(_map, markers, mcOptions); } }; var _getHotelUrl = function(keyword){ return _urls.hotelUrl.replace('abc', keyword); }; var _getGalleryUrl = function(codhot, index){ return _urls.galleryUrl.replace('111', codhot).replace('222', index); }; var _getMarkerContent = function(markerData){ var _html = '