2012-05-10 4 views
0

Я не знаю, почему, но холст карты не отображается на экране ... Я использовал Мастер Fusion TablesLayer Wizard 2.0, чтобы добавить фильтр (текстовый поиск). Возможно, проблема - это утверждение IF ... ELSE. Или небольшая синтаксическая ошибка. Пожалуйста помоги!Broken Code - Fusion Tables Map

<!DOCTYPE html> 
<html> 
<head> 
<style> 
    #map-canvas { width:500px; height:400px; } 
</style> 
<script type="text/javascript" src="http://maps.google.com/maps/apijs?sensor=false">  </script> 
<script type="text/javascript"> 
    var map; 
    var layer10; 

    function initialize() { 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    center: new google.maps.LatLng(-30.08870187538118, -51.16813659667969), 
    zoom: 11, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 
    layer10 = new google.maps.FusionTablesLayer({ 
    query: { 
    select: "'ENDERECO_GOOGLE'", 
    from: 3767057 
    }, 
    map: map 
    }); 
    } 


//the function to activate filters 
    function changeMap10() { 
    var searchString = document.getElementById('search-string-10').value.replace(/'/g, "\\'"); 
    var filter = document.getElementById('filter').value.replace(/'/g, "\\'"); 
    if (filter == "TURNO"){ 
    layer10.setOptions({ 
     query: { 
     select: "'ENDERECO_GOOGLE'", 
     from: 3767057, 
     } 
    }); 
    } 
    layer10.setOptions({ 
     query: { 
     select: "'ENDERECO_GOOGLE'", 
     from: 3767057, 
     where: "'TURNO'" = '" + searchString + "'" 
     } 
    }); 
    else if (filter == "DIA_SEMANA"){ 
    layer10.setOptions({ 
     query: { 
     select: "'ENDERECO_GOOGLE'", 
     from: 3767057, 
     } 
    }); 
    } 
    layer10.setOptions({ 
     query: { 
     from: 3767057, 
     where: "'DIA_SEMANA'" = '" + searchString + "'" 
     }   
    }); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
</head> 
<body> 
    <div id="map-canvas"></div> 
    <div style="margin-top: 10px;"> 
    <label>Choose data!</label><input type="text" id="search-string-10"> 
    <input type="button" onclick="changeMap10()" value="Search"> 
</div> 
</body> 
</html> 

ответ

0

Ваше утверждение if/else немного перепутано: у вас есть код между утверждениями. Если я правильно понял ваш код, вы хотите изменить предложение where запроса на основании ввода search-string-10. Я упростил код:

function changeMap10() { 
    var searchString = document.getElementById('search-string-10').value.replace(/'/g, "\\'"); 
    var filter = document.getElementById('filter').value.replace(/'/g, "\\'"); 
    var whereClause = ''; 
    if (filter == "TURNO") { 
     whereClause = "'TURNO' = '" + searchString + "'"; 
    } 
    else if (filter == "DIA_SEMANA") { 
     whereClause = "'DIA_SEMANA' = '" + searchString + "'"; 
    } 
    layer10.setOptions({ 
     query: { 
      select: "'ENDERECO_GOOGLE'", 
      from: 3767057, 
      where: whereClause 
     } 
    }); 
}​ 

your example on jsFiddle я положил и сделал некоторые изменения, такие как добавление фильтра выбрать ящик или с помощью contains ignoring case вместо =.

+0

Большое спасибо, Стефан! –

Смежные вопросы