2012-05-10 14 views
0

マップキャンバスが画面に表示されない理由はわかりません... Fusion TablesLayer Wizard 2.0を使用してフィルタ(テキストベースの検索)を追加しました。たぶん問題はIF ... ELSEです。あるいは、文法的に間違っている。助けてください!壊れたコード - 融合テーブルマップ

<!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文が少し混在しています。文の間にコードがあります。あなたのコードが正しいと分かっていれば、search-string-10入力に基づいてクエリのwhere句を変更したいと思っています。私はあなたのコードを簡素化:

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

ありがとう、Stefan! –