//map_data_holder postane holder id-jev potrebnih za prikaz markerjev var map_data_holder = {}; //id spremenljivke, ki bo prikazana v pojavnem oknu var spremenljivka_box = 0; //Procedura, ki preveri ce je gogle maps API ze includan function googleMapsAPIProcedura(after){ //preveri, ce je google API ze includan (ce se je vedno nanovo icludal, je prislo do errorjev) if((typeof google === 'object' && typeof google.maps === 'object')){ //API je naloadan, inicializiraj mapo after(); } else{ mapsAPIseNi(after); } } //kreiraj colorbox (popup, kjer bo zemljevid) $(document).ready(function () { $(".fMap").colorbox({ scrolling:false, width:"80%", height:"80%", title: "", html:'
', onComplete:function(){ if(!$(".fMap").hasClass("rawData")){ $('#colorbox').addClass("divPopUp"); getMapDataAjax(); } else{ googleMapsAPIProcedura(initializeMapGeneralForIPs); } } }); }); /** * ob kliku na link prenesi podatke o zeljeni spremenljivki * @param {type} sprid - int - id spremenljivke * @param {type} usrid - int - id userja * @param {type} loopid - int - id loopa * @param {type} ankid - int - id ankete * @param {type} ajaxCall - string - call to ajax function mapData or mapDataAll * @returns {undefined} */ function passMapData(sprid, usrid, loopid, ankid, ajaxCall){ if(!ajaxCall) ajaxCall = "mapData"; //map_data_holder postane holder id-jev potrebnih za prikaz markerjev kasneje map_data_holder = {spr_id: sprid, usr_id: usrid, loop_id: loopid, ank_id: ankid, ajaxCall: ajaxCall}; spremenljivka_box = sprid; } /** * Passing raw json data for google maps (originaly used for mod IP location) * @param {type} rawData - json - [{"Modena":{"cnt":2,"lat":44.666698455810546875,"lng":10.9167003631591796875}}] * @returns {undefined} */ function passMapDataRaw(rawData){ //map_data_holder postane holder id-jev potrebnih za prikaz markerjev kasneje map_data_holder = rawData; spremenljivka_box = 'IPloc'; } //inicializiraj mapo / nastavi mapo v colorboxu function initializeMapGeneral() { var mapOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; //pri vpogledu podatkov je viewMode vedno true viewMode = true; //infowindow iz API-ja, za prikaz markerja in informacije o markerju infowindow = new google.maps.InfoWindow(); //deklaracija zemljevida var mapdiv = document.getElementById("map_canvas_all"); var map = new google.maps.Map(mapdiv, mapOptions); //to se kasneje uporabi za pridobitev mape z id-em spremenljivke mapdiv.gMap = map; //deklaracija mej/okvira prikaza na zemljevidu bounds[spremenljivka_box] = new google.maps.LatLngBounds(); //to store combined bounds of all polylines or polygons bounds['all'] = new google.maps.LatLngBounds(); //get input type (marker, polyline, polygon) var input_type = map_data_holder.input_type; delete map_data_holder.input_type; //get subtype (mylocation-1, multilocation-2, chooselocation-3) var enota = map_data_holder.enota; delete map_data_holder.enota; //podvprasanja v infowindow podvprasanje[spremenljivka_box] = map_data_holder.podvprasanje; delete map_data_holder.podvprasanje; //naslov podvprasanja v infowindow podvprasanje_naslov[spremenljivka_box] = map_data_holder.podvprasanje_naslov; delete map_data_holder.podvprasanje_naslov; max_mark[spremenljivka_box] = map_data_holder.length; ml_sprem[spremenljivka_box] = false; st_markerjev[spremenljivka_box] = 0; allMarkers[spremenljivka_box] = []; if(enota == 3){ map_data_fill(spremenljivka_box, map_data_holder.data, enota); map_data_fill_info_shapes(spremenljivka_box, map_data_holder.info_shapes); } else{ if(input_type == 'marker'){ //nafilaj mapo z markerji map_data_fill(spremenljivka_box, map_data_holder); //var soda = spremenljivka_box % 2 == 0; //if(soda){ // Add a marker clusterer to manage the markers. var markerCluster = new MarkerClusterer(map, allMarkers[spremenljivka_box], {imagePath: srv_site_url + 'admin/survey/img_0/markerclusterer/m', maxZoom: 15}); //} } else if(input_type == 'polyline') map_data_fill_shape(spremenljivka_box, map_data_holder.data, input_type); else if(input_type == 'polygon') map_data_fill_shape(spremenljivka_box, map_data_holder.data, input_type); } //hide loader $("#cboxLoadingOverlay").hide(); }; //inicializiraj mapo / nastavi mapo v colorboxu za mod IP location function initializeMapGeneralForIPs() { var mapOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: false }; //infowindow iz API-ja, za prikaz markerja in informacije o markerju infowindow = new google.maps.InfoWindow(); //deklaracija zemljevida var mapdiv = document.getElementById("map_canvas_all"); if(!mapdiv) mapdiv = document.getElementById("map_ip"); var map = new google.maps.Map(mapdiv, mapOptions); //to se kasneje uporabi za pridobitev mape z id-em spremenljivke mapdiv.gMap = map; //deklaracija mej/okvira prikaza na zemljevidu bounds[spremenljivka_box] = new google.maps.LatLngBounds(); max_mark[spremenljivka_box] = map_data_holder.length; ml_sprem[spremenljivka_box] = false; st_markerjev[spremenljivka_box] = 0; allMarkers[spremenljivka_box] = []; //close infowindow on zoom because info can change due to clustering google.maps.event.addListener(map, 'zoom_changed', function() { infowindow.close(); }); Object.keys(map_data_holder).forEach(function(key) { //pomnozi markerje glede na frekvence for(var i=0; i '+key+'
'; }); if (map.getZoom() <= markerCluster.getMaxZoom()) { infowindow.setContent(text); infowindow.setPosition(cluster.getCenter()); infowindow.open(map); } }); //hide loader $("#cboxLoadingOverlay").hide(); }; function createMarkerForIps(key, lat, lng) { //pridobi mapo spremenljivke var map = document.getElementById("map_canvas_all"); if(!map) map = document.getElementById("map_ip").gMap; else map = document.getElementById("map_canvas_all").gMap; //var path_img_dir = srv_site_url + 'admin/survey/img_0/'; var bigIcon = 1; /*if(map_data_holder[key].cnt > 9999) bigIcon = 5; else if(map_data_holder[key].cnt > 999) bigIcon = 4; else if(map_data_holder[key].cnt > 99) bigIcon = 3; else if(map_data_holder[key].cnt > 9) bigIcon = 2;*/ var icon = { //fillColor: '#FF5555', //url: path_img_dir + 'marker_default.svg', url: srv_site_url + 'admin/survey/img_0/markerclusterer/m'+bigIcon+'.png', fillOpacity: 1, strokeWeight: 1 }; //nastavitve markerja var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), title: key, map: map, icon: icon, label: { text: /*map_data_holder[key].cnt+''*/'1' // Add in the custom label here //fontFamily: 'Roboto, Arial, sans-serif, custom-label-' + map_data_holder[key].cnt } }); allMarkers[spremenljivka_box].push(marker); //Create a div element for container. var container = document.createElement("div"); //Create a label element for address. var label = document.createElement("label"); label.innerHTML = '' + 1 + ' '+key; container.appendChild(label); //listener ob kliku na marker - focus input mora biti po nastavljanju bounds ali zoom google.maps.event.addListener(marker, 'click', function () { infowindow.setContent(container); infowindow.open(map, marker); }); //nastavi label infowindow.setContent(container); //odpre marker - prikaze label (kot da bi ga kliknil) //infowin.open(map, marker); //v okvir se doda nov marker bounds[spremenljivka_box].extend(marker.position); //ce je samo eden marker, ga malo odzoomaj if (st_markerjev[spremenljivka_box] == 0) { map.setCenter(marker.position); map.setZoom(17); } else if (st_markerjev[spremenljivka_box] > 0) { //zemljevid se prilagodi okviru map.fitBounds(bounds[spremenljivka_box]); //ce je v viewMode - v podatkih ali analizah - se odzooma za 1 samo pri zadnjem markerju if (max_mark[spremenljivka_box] == st_markerjev[spremenljivka_box] + 1) { //zmanjsaj zoom za 1, ker google naredi prevec oddaljeno google.maps.event.addListenerOnce(map, "bounds_changed", function () { map.setZoom(map.getZoom() - 1); }); } } //stevilo markerjev se poveca st_markerjev[spremenljivka_box]++; } //pridobi markerje iz baze function getMapDataAjax() { //show loader $("#cboxLoadingOverlay").show(); $.ajax({ cache: false, crossDomain: true, type: 'post', dataType: "json", url: 'ajax.php?t='+map_data_holder.ajaxCall, data: { map_data: map_data_holder }, error: function(response) { console.log("Error in Ajax connection! Please try later!"); }, success: function(response) { //holder markerjev map_data_holder = response; googleMapsAPIProcedura(initializeMapGeneral); } }); } //for IP location navigation function geoip_map_navigation_toggle(el, data){ var elid = $(el).attr('id'); if(!$(el).hasClass("active")){ if(elid === 'geoip_countries') document.getElementById("geoip_cities").classList.remove("active"); else document.getElementById("geoip_countries").classList.remove("active"); $(el).addClass('active'); passMapDataRaw(data); googleMapsAPIProcedura(initializeMapGeneralForIPs); } }