2012-04-09 2 views
0

フュージョンテーブルの列に基づいてマーカー用のフィルターを複数作成しようとしています。フィルターを個別にフィルター処理するのではなく、並行して処理したい。ここで私はこれまでのところ、私はERICでここで見つけるの答えに、それをベースとしたコードですが、それは私のために動作しませんでした:コロンのGoogle Fusionを使用して作成されたマーカー用の複数のフィルター

<!DOCTYPE html> 
<html> 
    <head> 
<style> 
#map-canvas { width:500px; height:400px; } 
    </style> 
<script src="http://code.jquery.com/jquery.min.js"></script> 
<script src="http://code.jquery.com/ui/1.8.18/jquery-ui.min.js"></script> 
<script src="eq_jsonp.js"></script> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script type="text/javascript"src="http://maps.google.com/maps/api/js?sensor=false">   </script> 
<script type="text/javascript"> 
var map; 
var layerl0; 
var tableid = 3470746; 
var locationCol = 'Latitude'; 
    function initialize() { 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
    center: new google.maps.LatLng(28.2798935535169, -81.3486099243164), 
    zoom: 13, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

layerl0 = new google.maps.FusionTablesLayer({ 
    query: { 
     select: "'latitude'", 
     from: 3470746 
    }, 
    map: map 
    }); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 

function doQuery(){ 

// collect WHERE conditions here for each search-string value 

var query = []; 

var searchString = ''; 

// I'd name my select id's something more descriptive, e.g. "damage_level" vs search-  string1, etc. 

searchString = document.getElementById('classification').value; 

if(searchString){ 

query.push(" 'Roadway Classification:' = '" + searchString + "'"); 

} 

searchString = document.getElementById('name').value; 

if(searchString){ 

query.push("'Roadway Name:' = '" + searchString + "'"); 

} 

// Date Filter 

searchString = dateFilter(); 

if(searchString){ 

query.push(searchString); 

} 

// Now build the WHERE clause by joining with ' AND ' all the conditions. 

// Note: if nothing is in the where Fusion Tables will not object 

var where = query.join(' AND '); 
//alert(where); 

var qryOpts = { 

query: { 

    select: "'latitude'", 

    from: 3470746, 


    } 

}; 

layer.setOptions(qryOpts); 
return; 

} 

// set all form inputs to null and call doQuery again. 

function resetQuery(){ 

$('#classification').val(''); 
$('#name').val(''); 
doQuery(); 
} 

</script> 
</head> 
<body> 
<div id="map-canvas"></div> 
<form> 
<div style="margin-top: 10px;"> 
    <label>Roadway Classification</label> 
    <select id="classification" onchange="doQuery;" title="Select Roadway by Classification"> 
    <option value="">--Roadway Type--</option> 
    <option value="Collector">Collector</option> 
    <option value="Highway">Highway</option> 
    <option value="Minor Arterial">Minor Arterial</option> 
    </select> 
</div> 
<div style="margin-top: 10px;"> 
    <label>Roadway Name</label> 
    <select id="name" onchange="doQuery;" title="Select Roadway by Name"> 
    <option value="">--Roadway Name--</option> 
    <option value="Neptune Rd">Neptune Rd</option> 
    <option value="Partin Settlement Rd">Partin Settlement Rd</option> 
    <option value="Shady Ln">Shady Ln</option> 
    </select> 
    <br> 
    <input type="button" onclick="doQuery();" value="Search" /> 

    <input type="button" onclick="resetQuery();" value="Reset" /> 
    </form> 
</div> 
</body> 
</html>' 

答えて

0

があなたのtable 3470746で見ていたし、自分の列名がありませんそれらの後。試してみてください:

query.push("'Roadway Name' = '" + searchString + "'"); 

query.push(" 'Roadway Classification' = '" + searchString + "'"); 

また、あなたのqryOptsにwhere句追加されていません:、あなたの迅速な対応に感謝を

var where = query.join(' AND '); 


var qryOpts = { 

query: { 

    select: "'latitude'", 

    from: 3470746, 
    // WHERE clause was missing 
    where: where 

    } 

}; 
+0

エリックを。良いキャッチ私はあなたのコメントに応じてコードを修正しました。しかし、「検索」をクリックしてもフィルターが機能せず、マーカーもそれに応じて変更されません。私はどこが間違っていたのか分かりません! – haguib

+0

ありがとうございましたEricはもう一度where節で何を書くべきかを説明できますか?それは「道路の分類」と「道路の名前」のどこにあるべきですか? – haguib

+0

テーブルとスクリプトにいくつかの変更を加えました。ここでは、カラム名のスペースを削除して、カラム名を小文字にしました。ただし、検索ボタンはまだ正しく起動しません!何が問題なの? – haguib