Filter points in map [javascript]

Asked

Viewed 131 times

2

Hello

I have a select on my site that serves as a filter, and I would like to fade specific points on the map depending on the chosen filter.

Is it possible to associate the points made on the map with my json? if yes how can I do this?

json is doing database work.

Points on the map were created by script

It is possible to give an id to a script and put the id in the specific person of the json?

===========================================================================

Code of the select + map:

var map;
                function initMap() {
                  map = new google.maps.Map(document.getElementById('map'), {
                    center: {lat: 38.736946, lng: -9.142685},
                    zoom: 7,
                    });
                    
                    var image = '/imagens/iconmapa2.png';

// Lagoa, algarve
  var beachMarker = new google.maps.Marker({
    position: {lat: 37.147150, lng: -8.483230},
    map: map,
    icon: image
  });

// ilha terceira, Açores
  var beachMarker = new google.maps.Marker({
    position: {lat: 38.721210, lng: -27.210329},
    map: map,
    icon: image
  });

// Almada, pragal
  var beachMarker = new google.maps.Marker({
    position: {lat: 38.667440, lng: -9.179570},
    map: map,
    icon: image
  });

// Terrena, alandroal
  var beachMarker = new google.maps.Marker({
    position: {lat: 38.621020, lng: -7.411580},
    map: map,
    icon: image
  });

// Terrena, alandroal - segunda vitima
  var beachMarker = new google.maps.Marker({
    position: {lat: 38.621020, lng: -7.411580},
    map: map,
    icon: image
  });

// Dafundo, Oeiras
  var beachMarker = new google.maps.Marker({
    position: {lat: 38.706230, lng: -9.250460},
    map: map,
    icon: image
  });

// Travessa das Frigideiras, Santarém
  var beachMarker = new google.maps.Marker({
    position: {lat: 39.235370, lng: -8.682080},
    map: map,
    icon: image
  });

// Moimenta da Beira, Viseu
  var beachMarker = new google.maps.Marker({
    position: {lat: 40.985050, lng: -7.617740},
    map: map,
    icon: image
  });

// Cruz de Pau, Seixal
  var beachMarker = new google.maps.Marker({
    position: {lat: 40.668580, lng: -7.933170},
    map: map,
    icon: image
  });

// Cruz de Pau, Seixal - Segunda vitima
  var beachMarker = new google.maps.Marker({
    position: {lat: 40.668580, lng: -7.933170},
    map: map,
    icon: image
  });

// Porto
  var beachMarker = new google.maps.Marker({
    position: {lat: 41.157944, lng: -8.629105},
    map: map,
    icon: image
  });

// Golegã, Santarém
  var beachMarker = new google.maps.Marker({
    position: {lat: 39.402700, lng: -8.489080},
    map: map,
    icon: image
  });

// Salamonde, Vieira do Minho
  var beachMarker = new google.maps.Marker({
    position: {lat: 41.681510, lng: -8.091410},
    map: map,
    icon: image
  });

// Ventosa, Torres Vedras
  var beachMarker = new google.maps.Marker({
    position: {lat: 39.067570, lng: -9.309280},
    map: map,
    icon: image
  });
  }
  
  <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC6BWOev4iy16PGYkfagX-s07yLGO92hLk&callback=initMap"></script>
  
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    
    var json = [{
        "Nome": "Lucia Rodrigues",
        "Idade": 48,
        "Distrito": "Faro",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Nome Desconhecido",
        "Idade": 46,
        "Distrito": "Açores",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Não"
    },
    {
        "Nome": "Vera Silva",
        "Idade": 30,
        "Distrito": "Setúbal",
        "Faixa Etaria": "26-35",
        "Faixa": "faixaC",
        "Sexo": "Fem",
        "RecursoArma": "Não"
    },
    {
        "Nome": "Maria Eufrázia",
        "Idade": 83,
        "Distrito": "Évora",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Luzia Rosado",
        "Idade": 80,
        "Distrito": "Évora",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Fernanda",
        "Idade": 70,
        "Distrito": "Lisboa",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Nome Desconhecido",
        "Idade": 48,
        "Distrito": "Açores",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Não"
    },
    {
        "Nome": "Marina Mendes",
        "Idade": 25,
        "Distrito": "Viseu",
        "Faixa Etaria": "18-25",
        "Faixa": "faixaB",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Helena Cabrita",
        "Idade": 60,
        "Distrito": "Madeira",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Lana",
        "Idade": 2,
        "Distrito": "Madeira",
        "Faixa Etaria": "0-17",
        "Faixa": "faixaA",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Fernando Cruz",
        "Idade": 60,
        "Distrito": "Porto",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Masc",
        "RecursoArma": "Não"
    },
    {
        "Nome": "Ana Maria Silva",
        "Idade": 53,
        "Distrito": "Açores",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Sim"
    },
    {
        "Nome": "Ana Paula",
        "Idade": 40,
        "Distrito": "Braga",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Não"
    },
    {
        "Nome": "Heila Lopes",
        "Idade": 44,
        "Distrito": "Lisboa",
        "Faixa Etaria": "36 ou mais",
        "Faixa": "faixaD",
        "Sexo": "Fem",
        "RecursoArma": "Não"
    }
    ]
    
    $(document).on("click", "#btnBuscar", function() {
  var filtroFaixaEtaria = $("#FaixaEtaria option:selected").text();
  var filtroSexo = $("#Sexo option:selected").text();
  var filtroRecursoArma = $("#RecursoArma option:selected").text();
  var filtroDistrito = $("#Distrito option:selected").text();

  var arrayResultados = json.filter(function(item) {
    var criteria = true;

    if (filtroFaixaEtaria != null && filtroFaixaEtaria != "")
      criteria = criteria && item["Faixa Etaria"] == filtroFaixaEtaria;
    if (filtroSexo != null && filtroSexo != "")
      criteria = criteria && item["Sexo"] == filtroSexo;
    if (filtroRecursoArma != null && filtroRecursoArma != "")
      criteria = criteria && item["RecursoArma"] == filtroRecursoArma;
    if (filtroDistrito != null && filtroDistrito != "")
      criteria = criteria && item["Distrito"] == filtroDistrito;

    return criteria;

  });
  
  $(document).on("click", "#btnLimpar", function() {
  $('#selectsfiltro').each (function(){
    this.reset();
  });

  var filtroFaixaEtaria = $("#FaixaEtaria option:selected").text();
  var filtroSexo = $("#Sexo option:selected").text();
  var filtroRecursoArma = $("#RecursoArma option:selected").text();
  var filtroDistrito = $("#Distrito option:selected").text();

  var arrayResultados = json.filter(function(item) {
    var criteria = true;

    if (filtroFaixaEtaria != null && filtroFaixaEtaria != "")
      criteria = criteria && item["Faixa Etaria"] == filtroFaixaEtaria;
    if (filtroSexo != null && filtroSexo != "")
      criteria = criteria && item["Sexo"] == filtroSexo;
    if (filtroRecursoArma != null && filtroRecursoArma != "")
      criteria = criteria && item["RecursoArma"] == filtroRecursoArma;
    if (filtroDistrito != null && filtroDistrito != "")
      criteria = criteria && item["Distrito"] == filtroDistrito;

    return criteria;

  });
<div id="escolha">
<form id="selectsfiltro">
    <h6>Faixa Etaria:</h6>
    <select id="FaixaEtaria" class="custom-select">
        <option></option>
        <option value="1">0-17</option>
        <option value="2">18-25</option>
        <option value="3">26-35</option>
        <option value="4">36 ou mais</option>
    </select>

    <br/>
    <br/> 
    <h6>Sexo:</h6>
    <select id="Sexo" class="custom-select">
        <option></option>
        <option value="5">Masc</option>
        <option value="6">Fem</option>
    </select>

    <br/>
    <br/>
    <h6>Recurso a arma:</h6>
    <select id="RecursoArma" class="custom-select">
        <option></option>
        <option value="7">Sim</option>
        <option value="8">Não</option>
    </select>


    <br/>
    <br/>
    <h6>Localidade:</h6>
    <select id="Distrito" class="custom-select">
        <option ></option>
        <option value="9">Viana do Castelo</option>
        <option value="10">Vila Real</option>
        <option value="11">Bragança</option>
        <option value="12">Braga</option>
        <option value="13">Porto</option>
        <option value="14">Aveiro</option>
        <option value="15">Viseu</option>
        <option value="16">Guarda</option>
        <option value="17">Coimbra</option>
        <option value="18">Castelo Branco</option>
        <option value="19">Leiria</option>
        <option value="20">Lisboa</option>
        <option value="21">Santarém</option>
        <option value="22">Portalegre</option>
        <option value="23">Évora</option>
        <option value="24">Setúbal</option>
        <option value="25">Beja</option>
        <option value="26">Faro</option>
        <option value="27">Açores</option>
        <option value="28">Madeira</option>
    </select>
</form>

<br>

    <div class="botesdefiltrar">
        <button id="btnBuscar" class="btn btn-outline-warning">Filtrar</button>
        <button type="reset" id="btnLimpar" class="btn btn-outline-warning">Limpar Filtro</button>
  </div>   
  </div>
  
  <div id="map"></div>

  • You must provide code to help your problem. What you have tried?

  • @Mauroalmeida I will edit the question and there the code I have

  • @Mauroalmeida put the code, can you take a look? what do not mean to say! i just wanted to associate a map location to a json case with some unknown code, as if it were an html class to css you understand?

  • You are wanting a lot in one question. Try asking a question for each feature you need.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.