JSFiddle - React, Tailwind, and code Playground

by Alex Azuero

HTML

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<div id="map" style="width: 500px; height: 400px;"></div>
    <div id="multi_filters">
      <div class="Group"> 
        <a class="titre">Group</a></br>
        A<input type="checkbox" value="GroupA" data-prop="group" checked/>
        B<input type="checkbox" value="GroupB"  data-prop="group"/>
      </div>
    </br>
      <div class="Number"> 
        <a class="titre">Number</a></br>
        1<input type="checkbox" value="1"  data-prop="number" checked/>
        2<input type="checkbox" value="2"  data-prop="number"/>
      </div>
    </div>

JavaScript

var markers =[];
    var locations = [
      ['GroupA','Bondi Beach', -33.890542, 151.274856, 2],
      ['GroupB','Coogee Beach', -33.923036, 151.259052, 1],
      ['GroupA','Cronulla Beach', -34.028249, 151.157507, 1],
      ['GroupB','Manly Beach', -33.80010128657071, 151.28747820854187, 2],
      ['GroupA','Maroubra Beach', -33.950198, 151.259302, 1]
    ];

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: new google.maps.LatLng(-33.92, 151.25),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var marker, i; 
    for (i = 0; i < locations.length; i++) {  
      marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][2], locations[i][3]),
        map: map,
        title: locations[i][0]+'-'+locations[i][4]
      });
      marker.group= locations[i][0];
      marker.number = locations[i][4];
      markers.push(marker);   
    }
  
  (function(boxes){
    
    for(var i=0;i<boxes.length;++i){
      //add click-listener for the checkboxes
      google.maps.event.addDomListener(boxes[i],'click',function(){
         var props={},box,prop,val,any,marker;
         for(var i=0;i<boxes.length;++i){
          box=boxes[i];
          prop=box.getAttribute('data-prop');
          val=box.value;
          
          if(box.checked){
            //variable to determine if there is any checkbox checked
            any=true;
            //populate an object with arrays
            //(key is the property-name)
            if(!props[prop]){
              props[prop]=[];
            }
            //push the value to the particular array
            props[prop].push(val);
          }
         }
         //create RegExp's from the arrays 
         for(var k in props){
            props[k]=new RegExp('^('+props[k].join('|')+')$');
         }
         //iterate over the markers
         for(var m=0;m<markers.length;++m){
          marker=markers[m];
          //no checkbox is checked, hide all...