ST_cybergarden/js/tilda-map-1.0.min.js
MegaVasiliy007 d45a14b0be init
2020-01-22 12:52:09 +03:00

20 lines
5.5 KiB
JavaScript

function t_appendGoogleMap(recid,key){var grecid=recid;if(typeof google==='object'&&typeof google.maps==='object'){t_handleGoogleApiReady(grecid)}else{if(window.googleapiiscalled!==!0){var runfunc='window.t_handleGoogleApiReady_'+grecid+' = function () { t_handleGoogleApiReady("'+grecid+'") }';eval(runfunc);var addParams='',maplang='';maplang=$('#rec'+recid).find('.t-map').data('map-language');if(maplang>''&&maplang.length==2){addParams='&language='+maplang}
var script=document.createElement("script");script.type="text/javascript";script.src="https://maps.google.com/maps/api/js?key="+jQuery.trim(key)+"&callback=t_handleGoogleApiReady_"+grecid+addParams;document.body.appendChild(script);window.googleapiiscalled=!0}else{setTimeout(function(){t_appendGoogleMap(grecid,key)},200)}}}
function t_handleGoogleApiReady(recid){$('#rec'+recid).find('.t-map').each(function(index,Element){var el=$(Element);var arMarkers=window['arMapMarkers'+recid];window.isDragMap=$isMobile?!1:!0;if(el.attr('data-map-style')!=''){var mapstyle=eval(el.attr('data-map-style'))}else{var mapstyle='[]'}
var myLatLng=arMarkers.length>0?new google.maps.LatLng(parseFloat(arMarkers[0].lat),parseFloat(arMarkers[0].lng)):!1;var myOptions={zoom:parseInt(el.attr('data-map-zoom')),center:myLatLng,scrollwheel:!1,gestureHandling:'cooperative',zoomControl:!0,styles:mapstyle};var map=new google.maps.Map(Element,myOptions);var i,mrk,marker,markers=[],infowindow;var bounds=new google.maps.LatLngBounds();for(i in arMarkers){mrk=arMarkers[i];myLatLng=new google.maps.LatLng(parseFloat(mrk.lat),parseFloat(mrk.lng));marker=new google.maps.Marker({position:myLatLng,map:map,title:mrk.title});bounds.extend(myLatLng);if(mrk.descr>''){attachInfoMessage(marker,mrk.descr)}else{attachInfoMessage(marker,mrk.title)}
markers[markers.length]=marker;infowindow='';marker=''}
function attachInfoMessage(marker,descr){var infowindow=new google.maps.InfoWindow({content:$("<textarea/>").html(descr).text()});marker.addListener('click',function(){infowindow.open(marker.get('map'),marker)})}
if(arMarkers.length>1){map.fitBounds(bounds);var listener=google.maps.event.addListener(map,"idle",function(){if(map.getZoom()>parseInt(el.attr('data-map-zoom'))||map.getZoom()==0){map.setZoom(parseInt(el.attr('data-map-zoom')))}
if(map.getZoom()>16){map.setZoom(16)}
google.maps.event.removeListener(listener)})}
google.maps.event.addDomListener(window,"resize",function(){var center=map.getCenter();var zoom=parseInt(el.attr('data-map-zoom'));google.maps.event.trigger(map,"resize");map.setCenter(center);if(arMarkers.length>0){map.fitBounds(bounds);if(zoom>0&&(map.getZoom()>zoom||map.getZoom()==0)){map.setZoom(zoom)}}});el.on('displayChanged',function(){google.maps.event.trigger(map,"resize")});el.on('sizechange',function(){google.maps.event.trigger(map,"resize")})})}
function t_appendYandexMap(recid,key){var yarecid=recid;if(typeof ymaps==='object'&&typeof ymaps.Map==='function'){t_handleYandexApiReady(recid)}else{if(window.yandexmapsapiiscalled!==!0){var runfunc='window.t_handleYandexApiReady_'+yarecid+' = function () { return t_handleYandexApiReady("'+yarecid+'") }';eval(runfunc);var maplang;maplang=$('#rec'+recid).find('.t-map').data('map-language');if(maplang&&maplang=='EN'){maplang='en_US'}else{maplang='ru_RU'}
var script=document.createElement("script");script.type="text/javascript";script.src="https://api-maps.yandex.ru/2.1/?lang="+maplang+"&coordorder=latlong&onload=t_handleYandexApiReady_"+yarecid;if(key>''){script.src=script.src+'&apikey='+key}
document.body.appendChild(script);window.yandexmapsapiiscalled=!0}else{setTimeout(function(){t_appendYandexMap(yarecid,key)},200)}}}
function t_handleYandexApiReady(recid){$('#rec'+recid).find('.t-map').each(function(index,Element){var el=$(Element);var arMarkers=window['arMapMarkers'+recid];window.isDragMap=$isMobile?!1:!0;if(el.attr('data-map-style')!=''){var mapstyle=eval(el.attr('data-map-style'))}else{var mapstyle='[]'}
var myLatlng=arMarkers.length>0?[parseFloat(arMarkers[0].lat),parseFloat(arMarkers[0].lng)]:!1;var myStates={zoom:parseInt(el.attr('data-map-zoom')),center:myLatlng,scrollZoom:!1,controls:['typeSelector','zoomControl'],drag:window.isDragMap};var map=new ymaps.Map(Element,myStates),i,mrk,marker;var myGroup=new ymaps.GeoObjectCollection({});map.behaviors.disable('scrollZoom');if($isMobile){map.behaviors.disable('drag');map.behaviors.disable('multiTouch');map.behaviors.disable('dblClickZoom')}
for(i in arMarkers){mrk=arMarkers[i];myLatlng=[parseFloat(mrk.lat),parseFloat(mrk.lng)];myGroup.add(new ymaps.Placemark(myLatlng,{hintContent:mrk.title,balloonContent:mrk.descr>''?$("<textarea/>").html(mrk.descr).text():mrk.title}))}
map.geoObjects.add(myGroup);if(arMarkers.length>1){map.setBounds(myGroup.getBounds(),{checkZoomRange:!0});var zoom=parseInt(el.attr('data-map-zoom'));if(zoom>0&&(map.getZoom()==0||map.getZoom()>zoom)){map.setZoom(zoom)}}
map.events.add('sizechange',function(e){var el=map.container.getParentElement();var zoom=parseInt($(el).attr('data-map-zoom'));map.container.fitToViewport();if(arMarkers.length>1){map.setBounds(myGroup.getBounds(),{checkZoomRange:!0})}
if(zoom>0&&(map.getZoom()==0||map.getZoom()>zoom)){map.setZoom(zoom)}});el.on('sizechange',function(){map.container.fitToViewport()});if($isMobile){var lastTap=0;$('#rec'+recid).mousedown(function(){var now=(new Date()).valueOf();var diff=(now-lastTap);lastTap=now;if(diff<250){if(window.isDragMap){window.isDragMap=!1}else{window.isDragMap=!0}
if(window.isDragMap){map.behaviors.enable('drag');map.behaviors.enable('multiTouch')}else{map.behaviors.disable('drag');map.behaviors.disable('multiTouch')}}})}})}