função updateMap para a API do Google Maps

estou a ter problemas com a função updateMap na API do google Maps... especificamente com o uso de múltiplas declarações "else if" para consulta de dados. O meu código está em baixo. O primeiro " se "funciona, o primeiro" se "funciona, e o último" else "funciona para atualizar o meu mapa, é o segundo" se " que não atualiza o meu mapa. O utilizador passa os valores dos menus "tipo" e "Visibilit2" através dos menus "drop down".

Alguma sugestão para corrigir isto? O mapa precisa de ser actualizado com base nos valores do utilizador de ambos, ambos, ou nenhum deles, definindo o menu em branco (que é o que a última conta para). Idealmente, gostaria de expandir isso para incluir três ou quatro opções adicionais para consulta. Os dados são armazenados numa tabela de fusão.

google.maps.event.addDomListener(document.getElementById('Type'), 'change', function(){updateMap(layer, tableID, locationColumn);});
google.maps.event.addDomListener(document.getElementById('Visibilit2'), 'change', function(){updateMap(layer, tableID, locationColumn);});

function updateMap(layer, tableID, locationColumn){
    var Type = document.getElementById('Type').value;
    var Visibilit2 = document.getElementById('Visibilit2').value
    if (Type, Visibilit2){
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID,
                where: "Type = '" + Type + "' AND Visibilit2 = '" + Visibilit2 + "'"
            }
        });
    } else if (Type){
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID,
                where: "Type = '" + Type + "'"
            }
        });
    } else if (Visibilit2){
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID,
                where: "Visibilit2 = '" + Visibilit2 + "'"
            }
        });
    }
    else {
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID
            }
        });
    }
}
Author: Mark Reimer, 2014-12-18

1 answers

Está bem, resolvi-o quase imediatamente após a publicação. Mas! Eu não tenho certeza se é a maneira mais eficiente de fazê-lo e eu não acho que ele vai resolver o problema se eu adicionei mais variáveis. O código está abaixo e eu gostaria muito de receber quaisquer sugestões para melhores maneiras de fazer isso. Acabei de aninhar um "se"dentro do primeiro "se", ainda estou confuso sobre o porquê de múltiplos " se " não funcionarem... Obrigado!
function updateMap(layer, tableID, locationColumn){
    var Type = document.getElementById('Type').value;
    var Visibilit2 = document.getElementById('Visibilit2').value
    if (Type){
        if (Visibilit2){
            layer.setOptions({
                query: {
                    select: locationColumn,
                    from: tableID,
                    where: "Type = '" + Type + "' AND Visibilit2 = '" + Visibilit2 + "'"
                }
            });
        }  else {
                layer.setOptions({
                query: {
                    select: locationColumn,
                    from: tableID,
                    where: "Type = '" + Type + "'"
                    }
                });
            }
    }  else if (Visibilit2){
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID,
                where: "Visibilit2 = '" + Visibilit2 + "'"
            }
        });
    }
    else {
        layer.setOptions({
            query: {
                select: locationColumn,
                from: tableID
            }
        });
    }
}
 0
Author: Mark Reimer, 2014-12-18 15:57:02