PageSourceSearch

https://www.kilroytrip.fr/js/map/map.js?ppppAAAA

js kilroytrip.fr collected 2026-09-25 00:09:01 UTC 19,520 bytes, 524 lines download raw bytes

1function isBase64Encoded(str) {
2    try {
3        return btoa(atob(str)) === str;
4    } catch (error) {
5        return false;
6    }
7}
8var initialize=function(DataFilter){
9	
10var MaLat
11var MaLng
12var Firstload = 0;
13var DataFilter = 0;
14var debouncedLoad = function(poi) {
15		setTimeout(filtermap(poi),500);
16	}
17function debounce(func, wait) {
18    let timeout;
19    return function executedFunction(...args) {
20        const later = () => {
21            clearTimeout(timeout);
22            func(...args);
23        };
24        clearTimeout(timeout);
25        timeout = setTimeout(later, wait);
26    };
27}
28var Presents = [];
29var myarray = [];
30var markerClusters;
31var MaLat	=	localStorage.getItem('MaLat');
32var MaLng	=	localStorage.getItem('MaLng');
33var script = document.getElementById('maps');
34var Datalat = parseFloat(script.getAttribute('data-lat'));
35var Datalng = parseFloat(script.getAttribute('data-lng'));
36var DataidPoi = parseInt(script.getAttribute('data-idpoi'));
37console.log('DataidPoi='+DataidPoi);
38console.log('Datalng='+Datalng);
39console.log('Datalng='+Datalng);
40if (isNaN(MaLat)|| MaLat=== undefined || MaLat===null || MaLng=== undefined || MaLng===null || isNaN(MaLng)){
41	
42	if (MaLat=== undefined || MaLat===null || MaLng=== undefined || MaLng===null) {
43		MaLat='49.360568';
44		MaLng='-0.856669';
45		//console.log('lat undefi');
46	}
47		else if (isNaN(Datalat)){
48			MaLat=Datalat;
49			MaLng=Datalng;
50		
51	}
52	else
53	{
54		if (isBase64Encoded(MaLat) && isBase64Encoded(MaLng)) {
55    MaLat = window.atob(MaLat);
56    MaLng = window.atob(MaLng);
57} else {
58    // Traiter le cas où les valeurs ne sont pas correctement encodées en base64
59    MaLat = '49.360568';
60    MaLng = '-0.856669';
61}
62		//console.log('lat decodee'+localStorage.getItem('MaLat')+'->'+window.atob(localStorage.getItem('MaLat')));
63	}
64}else
65{	
66	MaLat=localStorage.getItem('MaLat');
67	MaLng=localStorage.getItem('MaLng');
68	//console.log('eee'+MaLat);
69}
70//console.log('ee'+MaLat);
71//MaLng	=	localStorage.getItem('MaLng');
72//console.log('ppaa'+localStorage.getItem('MaLng'));
73if (isNaN(MaLat)|| MaLat=== undefined || MaLat===null) {
74		LatDepart="49.360568";
75		LngDepart="-0.856669";
76}else
77{
78		LatDepart=MaLat;
79		LngDepart=MaLng;
80}
81
82var container = L.DomUtil.get('map-main');
83      if(container != null){
84        container._leaflet_id = null;
85      }
86	//var mymap = L.map('map-main', { dragging: 'pc' }).setView([LatDepart,LngDepart], 12);
87	var mymap = L.map('map-main').setView([LatDepart,LngDepart], 14);
88	markerClusters = L.markerClusterGroup();
89	var markersLayer = new L.LayerGroup();
90	mymap.zoomControl.remove();
91
92	var defaultBaseLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}).addTo(mymap);
93	var satelliteLayer = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {
94        maxZoom: 19,
95        attribution: 'Imagery &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'
96    });
97		
98
99
100var lockMap = false;
101document.getElementById('scroll-btn').addEventListener('click', function() {
102    var icon = this.querySelector('i');
103
104    if (icon.classList.contains('fa-unlock')) {
105        icon.classList.remove('fa-unlock');
106        icon.classList.add('fa-lock', 'text-danger');
107        // Action pour verrouiller la carte
108		mymap.dragging.disable();
109		mymap.scrollWheelZoom.disable();
110		lockMap = true;
111    } else {
112        icon.classList.remove('fa-lock');
113        icon.classList.add('fa-unlock');
114        // Action pour déverrouiller la carte
115        mymap.dragging.enable();
116		mymap.scrollWheelZoom.enable();
117		lockMap = false;
118    }
119});
120document.getElementById('map-main').addEventListener('wheel', function(event) {
121	console.log('zoom');
122    if (lockMap) {
123        event.preventDefault(); // Empêcher le zoom avec la molette de la souris si la carte est verrouillée
124    }
125}, { passive: false });
126		
127	function onLocationFound(e) {
128		console.log('onLocationFound');
129		//var radius = e.accuracy / 3;
130		var IconMe = L.icon({
131					iconUrl: "/images/markers/1-MyPosition.png",
132					iconSize: [60, 78],
133					// iconAnchor: [25, 50],
134					// popupAnchor: [-3, -76],
135				});
136				
137		
138		L.marker(e.latlng,{ icon: IconMe }).addTo(mymap)
139	//	.bindPopup("Vous êtes ici").openPopup();
140
141		//L.circle(e.latlng, radius).addTo(mymap);
142		debouncedLoad(DataFilter);
143		MaLat	=	e.latlng.lat; 
144		MaLng	=	e.latlng.lng;
145		localStorage.setItem('MaLat', window.btoa(MaLat)); 
146		localStorage.setItem('MaLng', window.btoa(MaLng)); 
147			console.log('MaLng='+MaLat);	
148		
149		 setTimeout(function() {
150             lc.stop();    
151                    }, 2500);
152		
153	}
154function letsgo(id) {
155	$('html, body').animate({
156		scrollTop: $("#" + id).offset().top
157	}, 1000);
158}
159	function onLocationError(e) {
160		//alert(e.message);
161	}
162//document.addEventListener("DOMContentLoaded", updateCityOrVillageName);	
163var updateCityOrVillageName=function () {
164	var center = mymap.getCenter();
165    var lat = center.lat;
166    var lng = center.lng;
167
168    // Utilisez un service de géocodage inversé pour obtenir le nom de la ville
169    var url = 'https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=' + lat + '&lon=' + lng;
170	console.log(url);
171    fetch(url)
172      .then(response => response.json())
173      .then(data => {
174      console.log(data);
175        var city = data.address.city;
176        if (!city) {
177          city = data.address.village;
178        }
179        if (!city) {
180          city = data.address.town;
181        }
182        document.getElementById('centre').textContent = city;
183      })
184      .catch(error => {
185        console.error('Erreur lors de la récupération des données:', error);
186      });
187}
188	mymap.on('locationfound', onLocationFound);
189	mymap.on('locationerror', onLocationError);
190
191	//mymap.locate({ setView: true, enableHighAccuracy: true, maxZoom: 20 });
192	var prevZoom = mymap.getZoom();
193
194		
195	
196		mymap.on('moveend', function(e){
197			
198		});
199		mymap.on('drag', function (e) {
200			//markersLayer.clearLayers();
201		});
202		mymap.on('dragend', function (e) {
203			// var nombreDeMarqueurs = Presents.length;
204		// console.log("Nombre de marqueurs présents : " + nombreDeMarqueurs);
205		// var currZoom = mymap.getZoom();
206    // if (currZoom < 12 && nombreDeMarqueurs > 200) {
207        // alert("Trop de marqueurs, veuillez zoomer.");
208        // return; // Bloquer la fonction debouncedLoad
209    // }
210			debouncedLoad(localStorage.getItem('idfilter'));
211			var centrecarte=e.target.getCenter();
212			console.log(centrecarte.lat);
213			localStorage.setItem('MaLat', window.btoa(centrecarte.lat)); 
214			localStorage.setItem('MaLng', window.btoa(centrecarte.lng));
215			mymap.dragging.disable();
216			mymap.scrollWheelZoom.enable();
217			
218		});
219		mymap.on('zoomend',function(e){
220			console.log(mymap.getZoom());
221			var centrecarte=e.target.getCenter();
222			//console.log(centrecarte.lat);
223			localStorage.setItem('MaLat', window.btoa(centrecarte.lat)); 
224			localStorage.setItem('MaLng', window.btoa(centrecarte.lng));
225			var currZoom = mymap.getZoom();
226		//var nombreDeMarqueurs = Presents.length;
227		//console.log("Nombre de marqueurs présents : " + nombreDeMarqueur
227s);
228    // if (currZoom < 12 && nombreDeMarqueurs > 200) {
229        // alert("Trop de marqueurs, veuillez zoomer.");
230        // return; // Bloquer la fonction debouncedLoad
231    // }
232			var diff = prevZoom - currZoom;
233			if(diff > 0){
234			   debouncedLoad(localStorage.getItem('idfilter'));
235			} else if(diff < 0) {
236			   //console.log('zoomed in');
237			    debouncedLoad(localStorage.getItem('idfilter'));
238			} else {
239			  // console.log('no change');
240			}
241			prevZoom = currZoom;
242		});
243
244var dragendmap = function(abc) {
245    var url = "/ajax/drag.end.map.php?" + abc;
246    
247    // Envoyer une requête Ajax GET
248    $.ajax({
249        url: url,
250        type: 'GET',
251        success: function(data) {
252            // Injection du contenu récupéré dans l'élément div
253            $("#plmt").html(data);
254			
255        },
256       error: function(xhr, status, error) {
257            // Gestion des erreurs
258            var errorMessage = "Erreur : " + xhr.status + " " + xhr.statusText + " - " + error;
259            $("#plmt").html(errorMessage);
260        }
261    });
262};
263
264$('#plmt').on('click', '.seeonmap-btn', function() {
265	event.preventDefault();
266    // Récupérer les données spécifiques à partir des attributs de données
267    var vid = $(this).data('idpoi');
268    var vlat = $(this).data('vlat');
269    var vlng = $(this).data('vlng');
270    mymap.setView([vlat, vlng], 18);
271	 var marker = findMarkerById(vid,Presents);
272    if (marker) {
273        // Ouvrir le popup du marqueur
274		letsgo('map-main');
275        marker.openPopup();
276		//console.log("Marqueur trouvé : ", marker);
277		
278    } else {
279      //  console.error("Le marqueur avec l'ID "+vid+" spécifié n'a pas été trouvé.");
280    }
281});
282
283var locationBtns = document.querySelectorAll('.location-btn, .fa-location');
284
285// Assurez-vous qu'il y a au moins un élément correspondant
286if (locationBtns.length > 0) {
287    locationBtns.forEach(function(btn) {
288        btn.addEventListener('click', function() {
289           // console.log('Le bouton a été cliqué');
290			  if (navigator.geolocation) {
291        // Obtenez la position actuelle de l'utilisateur
292        navigator.geolocation.getCurrentPosition(function(position) {
293            var userLatitude = position.coords.latitude;
294            var userLongitude = position.coords.longitude;
295
296			localStorage.setItem('MaLat', window.btoa(userLatitude)); 
297			localStorage.setItem('MaLng', window.btoa(userLongitude)); 
298            mymap.setView([userLatitude, userLongitude], mymap.getZoom());
299			var customIcon = L.divIcon({
300                className: 'custom-marker',
301                html: '<i id="mapMarkerIcon" class="fas fa-map-marker" style="color: #384F95; font-size: 36px;"></i>',
302				iconSize: [36, 36] // Taille de l'icône (en pixels)
303            });
304
305            var userMarker = L.marker([userLatitude, userLongitude], {
306                icon: customIcon
307            }).addTo(mymap);
308
309			debouncedLoad(localStorage.getItem('idfilter'));
310			
311        }, function(error) {
312            // En cas d'erreur lors de la géolocalisation, affichez un message d'erreur
313            console.error('Erreur de géolocalisation : ', error.message);
314        });
315    } else {
316        // Si la géolocalisation n'est pas prise en charge par le navigateur, affichez un message d'erreur
317        console.error('La géolocalisation n\'est pas prise en charge par ce navigateur.');
318    }
319        });
320    });
321} else {
322    console.error("Aucun élément correspondant trouvé.");
323}
324
325
326function findMarkerById(id) {
327    // Parcourir l'array Presents
328    for (var i = 0; i < Presents.length; i++) {
329        // Convertir les IDs en entiers pour la comparaison
330        var presentId = parseInt(Presents[i]);
331        if (presentId === id) {
332            // Si l'ID spécifié correspond à un ID présent dans Presents, retourner le marqueur correspondant depuis myarray
333            return myarray[i];
334			
335        }
336    }
337    // Si aucun marqueur correspondant n'est trouvé, retourner null
338    return null;
339}
340var cityInput = document.getElementById('city-input');
341const debouncedGeocodeAddress = debounce(geocodeAddress, 500); // Délai de 500 millisecondes
342
343function geocodeAddress() {
344    var address = document.getElementById('city-input').value;
345
346    // Utilisez la fonction de géocodage fournie par le géocodeur de votre choix
347    // Exemple : Utilisation du géocodeur Nominatim (OpenStreetMap)
348    L.Control.Geocoder.nominatim().geocode(address, function(results) {
349        if (results && results.length > 0) {
350			
351            var latlng = results[0].center;
352            L.marker(latlng).addTo(mymap)
353                .bindPopup(address)
354              //  .openPopup();
355            mymap.setView(latlng, 15);
356			debouncedLoad(localStorage.getItem('idfilter'));
357        } else {
358           // alert('Adresse non trouvée');
359        }
360			
361    });
362}
363// Événement input pour détecter lorsque la saisie s'arrête
364cityInput.addEventListener('input', function() {
365    var cityName = cityInput.value.trim(); // Récupérer le nom de la ville et supprimer les espaces inutiles
366    debouncedGeocodeAddress();
367});
368var filtermap=function(idfilter) {
369	
370		localStorage.setItem('idfilter', idfilter); 
371		mymap.scrollWheelZoom.disable();
372		$('#map-main').css("opacity", 0.3);
373		$("#route").show();
374		if (idfilter!=0){
375			Presents = [];
376		markersLayer.clearLayers();
377		markerClusters.clearLayers();
378		
379		}
380		var bounds = mymap.getBounds();
381		var cache=Math.random();
382		bounds = 'ne=(' + window.btoa(bounds._northEast.lat) + ',' + window.btoa(bounds._northEast.lng) + ')&sw=(' + window.btoa(bounds._southWest.lat) + ',' + window.btoa(bounds._southWest.lng) + ')';
383		
384		//console.log("APP ->https://app.kilroytrip.fr/ajax/marker.json.asp?poi=" + idfilter + "&lat="+window.btoa(localStorage.getItem('MaLat'))+"&lng="+window.btoa(localStorage.getItem('MaLng'))+"&" + bounds+"&zoom="+mymap.getZoom());
385		MyQuery="poi=" + idfilter + "&lat="+localStorage.getItem('MaLat')+"&lng="+localStorage.getItem('MaLng')+"&" + bounds+"&zoom="+mymap.getZoom()+"&lg="+localStorage.getItem('lang')+"&c="+cache
386		//console.log(MyQuery);
387		$.get("/ajax/marker.json.php?poi=" + idfilter + "&lat="+localStorage.getItem('MaLat')+"&lng="+localStorage.getItem('MaLng')+"&" + bounds+"&zoom="+mymap.getZoom()+"&lg="+localStorage.getItem('lang')+"&c="+cache,  function (data) {
388
389			$(data).each(function () {
390
391				var iconUrl = this.isEvent === true ? '/images/markers/100.png' : '/images/markers/'+this.Type+'.png';
392				var myIcon = L.icon({
393					iconUrl: iconUrl,
394					 iconSize: [40, 52],
395					// iconAnchor: [25, 50],
396					// popupAnchor: [-3, -76],
397				});
398
399				var MarkerId = this.id
400				var NeedPhoto ;
401				var html;
402
403				// Vérifier si c'est un événement
404				if(this.isEvent === true){
405					// Popup pour les événements
406					var photoSrc = this.Photos || '/images/noimage.jpg';
407					html = '<div class="map-popup-wrap"><div class="map-popup"><a href="/' + this.url + '" class="listing-img-content fl-wrap"><div class="infobox-status event-status" style="background:#ff6b35;">'+this.Genre+'</div><img src="' + photoSrc + '" alt=""><div class="card-popup-raining map-card-rainting"><span class="map-popup-reviews-count"><i class="fal fa-calendar-star" style="color:#ff6b35;"></i></span></div></a> <div class="listing-content"><div class="listing-content-item fl-wrap"><div class="listing-title fl-wrap"><h4><a href=/'+this.url+'>' + this.title + '</a></h4><div class="map-popup-location-info"><i class="fas fa-map-marker-alt"></i>'+this.city+'</div></div><div class="map-popup-footer"><a href=/' + this.url + ' class="main-link">Details <i class="fal fa-long-arrow-right"></i></a></div></div></div></div></div>';
408				}
409				else if(this.Photos==''){
410
411				 html = '<div class="map-popup-wrap"><div class="map-popup"><a href="/' + this.url + '" class="listing-img-content fl-wrap"><div class="infobox-status close">'+this.Genre+'</div><img src="/upload/' + this.Photos + '" alt=""><div class="card-popup-raining map-card-rainting" data-staRrating="5"><span class="map-popup-reviews-count"><i class="fas fa-camera fa-10x npht" style="color:#ff0000" data-idpoi="'+this.id+'"></i></span></div></a> <div class="listing-content"><div class="listing-content-item fl-wrap"><div class="listing-title fl-wrap"><h4><a href=/'+this.url+'>' + this.title + '</a></h4><div class="map-popup-location-info"><i class="fas fa-map-marker-alt"></i>'+this.city+'</div></div><div class="map-popup-footer"><a href=' + this.url + ' class="main-link">Details <i class="fal fa-long-arrow-right"></i></a><a href="#" class="infowindow_wishlist-btn" data-idpoi="'+this.id+'"><i class="fal fa-heart"></i></a></div></div></div></div></div> ';
412			}else{
413				 html = '<div class="map-popup-wrap"><div class="map-popup"><a href="/' + this.url + '" class="listing-img-content fl-wrap"><div class="infobox-status close">
413'+this.Genre+'</div><img src="/upload/' + this.Photos + '" alt=""><div class="card-popup-raining map-card-rainting" data-staRrating="5"><span class="map-popup-reviews-count"></i></span></div></a> <div class="listing-content"><div class="listing-content-item fl-wrap"><div class="listing-title fl-wrap"><h4><a href=/'+this.url+'>' + this.title + '</a></h4><div class="map-popup-location-info"><i class="fas fa-map-marker-alt"></i>'+this.city+'</div></div><div class="map-popup-footer"><a href=' + this.url + ' class="main-link">Details <i class="fal fa-long-arrow-right"></i></a><a href="#" class="infowindow_wishlist-btn" data-idpoi="'+this.id+'"><i class="fal fa-heart"></i></a></div></div></div></div></div> ';
414			}
415				if (Presents.indexOf(MarkerId) == -1) {
416
417					var marker = new L.Marker(new L.LatLng(this.Latitude, this.Longitude), { icon: myIcon , id: MarkerId });
418					marker.bindPopup(html);
419					
420						
421					markerClusters.addLayer(marker);
422					
423					mymap.addLayer(markerClusters);
424					Presents.push(MarkerId);
425					myarray.push(marker);
426					
427					
428					 if (MarkerId==localStorage.getItem('idp')){ 
429					//console.log('en mémoire:'+localStorage.getItem('idp'));
430					//console.log('MrkerID:'+MarkerId);					 
431						 mymap.setView(new L.LatLng(this.Latitude, this.Longitude), 18);
432						 marker.openPopup();
433						  console.log('l416='+window.atob(localStorage.getItem('MaLat')));
434						 console.log('l416='+window.atob(localStorage.getItem('MaLng')));
435					 };
436					 
437					if (!isNaN(Datalat) && !isNaN(Datalng)&& DataidPoi !=0) {
438						  mymap.setView(new L.LatLng(Datalat, Datalng), 18);
439						  marker.openPopup();
440						 console.log('l422='+window.atob(localStorage.getItem('MaLat')));
441						 console.log('l422='+window.atob(localStorage.getItem('MaLng')));
442						 console.log('l422='+DataidPoi);
443						 DataidPoi=0;
444					 }
445					 
446
447				}
448
449			});
450				 localStorage.setItem('idp', '');
451					
452
453		}, 'json')
454		.done(function() {
455			//console.log('done');
456			console.log(localStorage.getItem('idp'));
457			
458			dragendmap(MyQuery);
459  })
460  .fail(function() {
461
462  })
463  .always(function() {
464   $("#route").hide();
465  $('#map-main').css("opacity", 1);
466  mymap.dragging.enable();
467  mymap.scrollWheelZoom.enable();
468
469  });
470
471	
472	}
473	
474		mymap.whenReady(function() {
475			
476			  mymap.invalidateSize();
477			console.log('DataFilter'+DataFilter);
478			filtermap(DataFilter);
479		
480		}
481		
482		);
483	// Indice actuel dans le tableau Presents
484var currentIndex = 0;
485
486// Fonction pour afficher l'ID récupéré dans la console
487function afficherId(id) {
488    console.log("ID récupéré :", id);
489
490}
491
492  function toggleLayers() {
493        if (mymap.hasLayer(defaultBaseLayer)) {
494            mymap.removeLayer(defaultBaseLayer);
495            satelliteLayer.addTo(mymap);
496        } else {
497            mymap.removeLayer(satelliteLayer);
498            defaultBaseLayer.addTo(mymap);
499        }
500    }
501
502    // Ajouter un événement de clic sur le bouton de bascule
503    document.getElementById('mapsat').addEventListener('click', toggleLayers);
504
505	
506$(".filtre").on("click", function(){
507	event.preventDefault();
508    var idType = $(this).data("idtype");
509    
510    if($(this).hasClass("checket-cat")) {
511		//
512		idType = 0;
513      // console.log(idType+ 'je decoche');
514		$(this).removeClass("checket-cat");
515    } else {
516		 $(".checket-cat").removeClass("checket-cat");
517		 $(this).addClass("checket-cat");
518        // console.log(idType+' je coche idType');
519    }
520	
521        filtermap(idType);
522});
523	
524	}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.