templates/_partials/map.html.twig line 1

Open in your IDE?
  1.  <script src="https://maps.google.com/maps/api/js?key={{ api_key_google }}&libraries=places"></script>
  2.         <script src="https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js"></script>
  3.         <script src="https://code.jquery.com/jquery-3.6.0.min.js"/></script>
  4.         <script>
  5.         var locations = [
  6.             {% for a in adherents %}
  7.                 {% set nom = a.societe %}
  8.                 {% if a.concept == "Open Point" %}
  9.                     {% set nom = '<img src="img/logo_points2.png" style="width: 40px;">' %}
  10.                 {% endif %}
  11.             { '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  }}'},
  12.             {% endfor %}
  13.         ]
  14.         var map, input, autocomplete;
  15.         function initAutocomplete() {
  16.             input = document.getElementById("pac-input");
  17.             input2 = document.getElementById("pac-input-2");
  18.             const options = {
  19.                 fields: ["formatted_address", "geometry", "name"],
  20.                 strictBounds: false,
  21.                 componentRestrictions: { country: "fr" },
  22.             };
  23.             autocomplete = new google.maps.places.Autocomplete(input, options);
  24.             autocomplete2 = new google.maps.places.Autocomplete(input2, options);
  25.             map = new google.maps.Map(document.getElementById("mapAdherent1"), {
  26.                 zoom: 7,
  27.                 center: { lat: 46.8066357, lng: 2.2216369},
  28.             });
  29.             var infoWindow = new google.maps.InfoWindow({
  30.                 content: "",
  31.                 disableAutoPan: true,
  32.             });
  33.             var markers = locations.map((element, i) => {
  34.                 var position = element['position'];
  35.                 var label = element['nom'];
  36.                 const svgMarker = {
  37.                 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",
  38.                 fillColor: "blue",
  39.                 fillOpacity: 0.6,
  40.                 strokeWeight: 0,
  41.                 rotation: 0,
  42.                 scale: 2,
  43.                 anchor: new google.maps.Point(15, 30),
  44.           };
  45.           let urlSvg = "{{ asset("img/map-marker.svg") | escape('js') }}"
  46.                 var marker = new google.maps.Marker({position, icon: urlSvg});
  47.                 marker.addListener("click", () => {
  48.                     if(element['concept'] == 'Open Point'){
  49.                       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>");
  50.                     }else{
  51.                       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>");
  52.                     }
  53.                     infoWindow.open(map, marker);
  54.                 });
  55.                 return marker;
  56.             });
  57.             const markerCluster = new markerClusterer.MarkerClusterer({
  58.                 map: map,
  59.                 markers: markers, 
  60.                 renderer: {
  61.                     render: ({ markers, _position: position }) => {
  62.                         return new google.maps.Marker({
  63.                             position: {
  64.                                 lat: position.lat(),
  65.                                 lng: position.lng(),
  66.                             },
  67.                             label: {
  68.                                 text: String(markers.length),
  69.                                 color: "white",
  70.                                 fontSize: '12px',
  71.                                 fontWeight: '600'
  72.                             },
  73.                             icon: "{{ asset('img/m1.png')}}",
  74.                         });
  75.                     },
  76.                 }
  77.             });
  78.             autocomplete.bindTo("bounds", map);
  79.             autocomplete.addListener("place_changed", () => {
  80.                 const place = autocomplete.getPlace();
  81.                 map.setCenter(place.geometry.location);
  82.                     map.setZoom(9);
  83.             });
  84.             autocomplete2.bindTo("bounds", map);
  85.             autocomplete2.addListener("place_changed", () => {
  86.                 const place = autocomplete2.getPlace();
  87.                 map.setCenter(place.geometry.location);
  88.                     map.setZoom(9);
  89.             });
  90.         }
  91.         initAutocomplete();
  92.         $('#formSearchMap').on('submit', function(e) {
  93.             e.preventDefault()
  94.         });
  95. </script>