2012-04-09 13 views
0

Ich versuche, mehrere Filter für die Marker zu erstellen, die auf Spalten in Fusionstabellen basieren. Ich möchte, dass die Filter parallel arbeiten und nicht individuell gefiltert werden. Hier ist der Code, den ich bisher, ich basiert es auf einer Antwort, die ich hier von ERIC gefunden, aber es hat nicht für mich arbeiten:Mehrere Filter für Marker, die mit Google Fusion erstellt wurden

<!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>' 

Antwort

0

Nahm einen Blick auf Ihre table 3470746 und Spaltennamen haben keine Doppelpunkt nach ihnen. Versuchen:

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

und

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

auch Sie nicht hinzufügen, die where-Klausel zu Ihrer qryOpts:

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


var qryOpts = { 

query: { 

    select: "'latitude'", 

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

    } 

}; 
+0

Eric, vielen Dank für Ihre schnelle Antwort. Guter Fang Ich habe den Code nach deinem Kommentar korrigiert. Wenn ich jedoch auf "Suchen" klicke, funktionieren die Filter nicht und die Marker ändern sich nicht entsprechend. Ich bin mir nicht sicher, wo ich falsch gelaufen bin! – haguib

+0

Danke Eric nochmal, kannst du weiter erklären, was in der Where-Klausel zu schreiben ist? sollte es wo sein: "Fahrbahnklassifizierung" und "Fahrbahnname"? – haguib

+0

Ich habe einige Änderungen an der Tabelle und dem Skript vorgenommen, wobei ich Leerzeichen in den Spaltennamen entfernte und die Spaltennamen in Kleinbuchstaben behielt. Die Suchschaltfläche wird jedoch immer noch nicht korrekt gestartet. Was könnte das Problem sein? – haguib

Verwandte Themen