var data = {"count":0,"installations":[]}; var filteredLocalities = {}; var map = undefined; var locality = '' var lastLatitude = 48.69096039092549; var lastLongitude = 19.632568359375; var lastZoom = 7 function initialize() { var center = new google.maps.LatLng(lastLatitude, lastLongitude); map = new google.maps.Map(document.getElementById('map'), { zoom: lastZoom, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP }); var latlngbounds = new google.maps.LatLngBounds(); var markers = []; for (var i = 0; i < data.installations.length; i++) { var dataInstallation = data.installations[i]; var latLng = new google.maps.LatLng(dataInstallation.latitude, dataInstallation.longitude); var marker = new google.maps.Marker({ position: latLng }); markers.push(marker); latlngbounds.extend(latLng); } var options = { imagePath: 'images/markerclusterer/m' }; var markerCluster = new MarkerClusterer(map, markers, options); map.setCenter(latlngbounds.getCenter()); map.fitBounds(latlngbounds); google.maps.event.addListener(map, 'idle', function() { updateCompaniesList(map); }); } function updateCompaniesList(map) { var lat1 = map.getBounds().getNorthEast().lat(); var lng1 = map.getBounds().getNorthEast().lng(); var lat0 = map.getBounds().getSouthWest().lat(); var lng0 = map.getBounds().getSouthWest().lng(); var hpTypeCounts = {}; var localityCounts = {}; var supplierCounts = {}; var companyCounts = {}; var rows = []; filteredLocalities = {}; for (var i = 0; i < data['count']; i++) { var installation = data['installations'][i]; var lng = installation['longitude']; var lat = installation['latitude']; if (lng >= lng0 && lng <= lng1 && lat >= lat0 && lat <= lat1) { if (installation.hp_type_name) { var key = ''.replace("REPLACE", installation.hp_type_name) + installation.hp_type_name + ''; if (hpTypeCounts[key]) { hpTypeCounts[key]++; } else { hpTypeCounts[key] = 1; } } if (installation.locality) { var key = ''.replace("REPLACE", installation.locality) + installation.locality + ''; if (localityCounts[key]) { localityCounts[key]++; } else { localityCounts[key] = 1; } } if (installation.company_name) { var key = ''.replace("REPLACE", installation.company_id) + installation.company_name + ''; if (companyCounts[key]) { companyCounts[key]++; } else { companyCounts[key] = 1; } } if (installation.supplier) { var key = ''.replace("REPLACE", installation.supplier) + installation.supplier + ''; if (supplierCounts[key]) { supplierCounts[key]++; } else { supplierCounts[key] = 1; } } } } jQuery('#hp_type_counts').html( countDictionaryToTable(hpTypeCounts) ); jQuery('#locality_counts').html( countDictionaryToTable(localityCounts) ); jQuery('#company_counts').html( countDictionaryToTable(companyCounts) ); jQuery('#supplier_counts').html( countDictionaryToTable(supplierCounts) ); } function countDictionaryToTable(counts) { return Object.keys(counts).sort(function(a,b) { return counts[b] - counts[a]; }).map(function (key) { return '' + key + '' + counts[key] + ''; }).join(''); } function showAll() { setMapPosition(48.69096039092549, 19.632568359375, 7); } function setMapPosition(lat, lng, zoom) { if (lat != lastLatitude || lng != lastLongitude) map.setCenter(new google.maps.LatLng(lat, lng)); lastLatitude = lat; lastLongitude = lng; if (zoom != map.getZoom()) map.setZoom(zoom); } google.maps.event.addDomListener(window, 'load', initialize);