7,9 → 7,6 |
* var groupeImageUrlTpl ; |
*/ |
var DEBUG = false,// Mettre à true pour afficher les messages de débogage |
pointsOrigine = null, |
boundsOrigine = null, |
markerClusterer = null, |
map = null, |
infoBulle = new google.maps.InfoWindow(), |
stations = null, |
72,7 → 69,7 |
attribuerListenersOverlay(); |
centrerTitreEtStats(); |
initialiserAffichagePanneauLateral(); |
initialiserGestionnaireMarqueurs() |
initialiserGestionnaireMarqueurs(); |
initialiserInfoBulle(); |
initialiserFormulaireContact(); |
chargerLimitesCommunales(); |
80,7 → 77,8 |
} |
|
function getUrlVars() { |
var vars = [], hash; |
var vars = [], |
hash; |
if (window.location.href.indexOf('?') != -1) { |
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); |
for (var i = 0; i < hashes.length; i++) { |
337,6 → 335,22 |
// Ajout de la couche OSM à la carte |
map.mapTypes.set('OSM', osmMapType); |
|
// Centrage sur bounding box si spécifiée |
if (bbox != null) { |
var pointsBbox = bbox.split(','); |
if (pointsBbox.length == 4) { |
var bounds = new google.maps.LatLngBounds( |
new google.maps.LatLng(parseFloat(pointsBbox[0]), parseFloat(pointsBbox[1])), // sud-ouest |
new google.maps.LatLng(parseFloat(pointsBbox[2]), parseFloat(pointsBbox[3])) // nord-est |
); |
// Apply fitBounds |
map.fitBounds(bounds); |
//console.log('bornes demandées: ' + bounds); |
/*var bds = map.getBounds(); // undefined si demandé trop tôt |
console.log('bornes obtenues: ' + bds);*/ |
} |
} |
|
// écouteur sur changement de fond |
google.maps.event.addListener( map, 'maptypeid_changed', function() { |
// licence par défaut |
404,6 → 418,9 |
var NELatLng = (map.getBounds().getNorthEast().lat())+'|'+(lngNE), |
SWLatLng = (map.getBounds().getSouthWest().lat())+'|'+(lngSW); |
chargerMarqueurs(zoom, NELatLng, SWLatLng); |
// Répercussion de la bounding box dans l'URL afin de pouvoir copier-coller et se retrouver au même endroit |
var bboxParam = '' + map.getBounds().getSouthWest().lat() + ',' + lngSW + ',' + map.getBounds().getSouthWest().lat() + ',' + lngNE; |
mettreAJourUrlAvecBbox(bboxParam); |
} else { |
programmerRafraichissementCarte(); |
} |
410,6 → 427,33 |
}, 400); |
} |
|
// ajoute ou met à jour le paramètre "bbox" de l'url dans la barre du navigateur |
function mettreAJourUrlAvecBbox(bboxParam) { |
var urlCourante = window.location.href, |
urlAJour; |
//alert('url courante: ' + urlCourante); |
if (urlCourante.indexOf('bbox=') == -1) { |
if (urlVars && urlVars.length > 0) { |
urlAJour = urlCourante += '&bbox=' + bboxParam; |
} else { |
urlAJour = urlCourante += '?bbox=' + bboxParam; |
} |
} else { |
urlAJour = urlCourante.replace(/bbox=[\d\.,-]*/g, 'bbox=' + bboxParam); |
} |
//alert('url à jour: ' + urlAJour); |
mettreAJourUrl(urlAJour); |
} |
// met à jour l'url dans la barre du navigateur |
function mettreAJourUrl(nouvelleUrl) { |
if (!!(window.history && window.history.pushState)) { // vérif si les méthodes existent sur le navigateur |
var currentState = window.history.state; |
if (currentState != nouvelleUrl) { |
window.history.pushState("tabarnak", "", nouvelleUrl); |
} |
} |
} |
|
var marqueurs = new Array(); |
function chargerMarqueurs(zoom, NELatLng, SWLatLng) { |
cacherMessageAucuneObs(); |
464,8 → 508,11 |
} |
|
premierChargement = true; |
// Si on charge pour la première fois et qu'on a un filtre sur les données, |
// il est peu probable que les marqueurs couvrent la Terre entière... on |
// ajuste donc la bbox aux données présentes - SAUF si on a spécifié une bbox ! |
function doitCentrerCarte() { |
return premierChargement && urlVars != null && urlVars.length > 0; |
return premierChargement && ! bbox && urlVars != null && urlVars.length > 0; |
} |
|
function rafraichirMarqueurs(data) { |