<script src="https://maps.google.com/maps/api/js?key={{ api_key_google }}&libraries=places"></script>
<script src="https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"/></script>
<script>
var locations = [
{% for a in adherents %}
{% set nom = a.societe %}
{% if a.concept == "Open Point" %}
{% set nom = '<img src="img/logo_points2.png" style="width: 40px;">' %}
{% endif %}
{ 'position': { lat: {{ a.lat }}, lng: {{ a.lon }} }, 'nom' :'{{ nom|raw }}', 'adresse': '{{ a.adresse|replace({"\n": "", "\r": "", "\t": ""}) }}<br/>{{ a.cp }} {{ a.ville }}', 'tel' : '{{ a.tel }}', 'url' : '{{ a.urlVente }}', 'btn': '{{ a.societe }} {{ a.ville }}', 'concept':'{{ a.concept }}'},
{% endfor %}
]
var map, input, autocomplete;
function initAutocomplete() {
input = document.getElementById("pac-input");
input2 = document.getElementById("pac-input-2");
const options = {
fields: ["formatted_address", "geometry", "name"],
strictBounds: false,
componentRestrictions: { country: "fr" },
};
autocomplete = new google.maps.places.Autocomplete(input, options);
autocomplete2 = new google.maps.places.Autocomplete(input2, options);
map = new google.maps.Map(document.getElementById("mapAdherent1"), {
zoom: 7,
center: { lat: 46.8066357, lng: 2.2216369},
});
var infoWindow = new google.maps.InfoWindow({
content: "",
disableAutoPan: true,
});
var markers = locations.map((element, i) => {
var position = element['position'];
var label = element['nom'];
const svgMarker = {
path: "M10.453 14.016l6.563-6.609-1.406-1.406-5.156 5.203-2.063-2.109-1.406 1.406zM12 2.016q2.906 0 4.945 2.039t2.039 4.945q0 1.453-0.727 3.328t-1.758 3.516-2.039 3.070-1.711 2.273l-0.75 0.797q-0.281-0.328-0.75-0.867t-1.688-2.156-2.133-3.141-1.664-3.445-0.75-3.375q0-2.906 2.039-4.945t4.945-2.039z",
fillColor: "blue",
fillOpacity: 0.6,
strokeWeight: 0,
rotation: 0,
scale: 2,
anchor: new google.maps.Point(15, 30),
};
let urlSvg = "{{ asset("img/map-marker.svg") | escape('js') }}"
var marker = new google.maps.Marker({position, icon: urlSvg});
marker.addListener("click", () => {
if(element['concept'] == 'Open Point'){
infoWindow.setContent("<div style='font-fmily: LATO;' class='mapInfoWindow text-center'><p class='mb-0'><img src='{{ asset('img/logo_points_3.png')| escape('js') }}' style='width: 130px;'></p><p class='mb-1'>"+element['adresse']+"</p><p class='mb-1'>Tel: "+element['tel']+"</p><a href='"+element['url']+"' class='btn btn-sm blue_points_background btn-gmap mt-2 mb-2' target='_blank'>Accéder à mon centre</a></div>");
}else{
infoWindow.setContent("<div style='font-fmily: LATO;' class='mapInfoWindow text-center'><p class='mb-1'>"+element['nom']+"</p><p class='mb-1'>"+element['adresse']+"</p><p class='mb-1'>Tel: "+element['tel']+"</p><a href='"+element['url']+"' class='btn btn-sm blue_points_background btn-gmap mt-2 mb-2' target='_blank'>Accéder à mon centre</a></div>");
}
infoWindow.open(map, marker);
});
return marker;
});
const markerCluster = new markerClusterer.MarkerClusterer({
map: map,
markers: markers,
renderer: {
render: ({ markers, _position: position }) => {
return new google.maps.Marker({
position: {
lat: position.lat(),
lng: position.lng(),
},
label: {
text: String(markers.length),
color: "white",
fontSize: '12px',
fontWeight: '600'
},
icon: "{{ asset('img/m1.png')}}",
});
},
}
});
autocomplete.bindTo("bounds", map);
autocomplete.addListener("place_changed", () => {
const place = autocomplete.getPlace();
map.setCenter(place.geometry.location);
map.setZoom(9);
});
autocomplete2.bindTo("bounds", map);
autocomplete2.addListener("place_changed", () => {
const place = autocomplete2.getPlace();
map.setCenter(place.geometry.location);
map.setZoom(9);
});
}
initAutocomplete();
$('#formSearchMap').on('submit', function(e) {
e.preventDefault()
});
</script>