2012-04-09 3 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:

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


var qryOpts = { 

query: { 

    select: "'latitude'", 

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

    } 

}; 
+0

Эрик, спасибо за быстрый ответ. Хороший улов я исправил код в соответствии с вашим комментарием. Однако, все еще, когда я нажимаю «поиск», фильтры не работают, и маркеры не меняются соответствующим образом. Я не знаю, где я ошибся! – haguib

+0

Спасибо Эрику еще раз, можно ли еще объяснить, что писать в разделе where? должно ли оно быть: «Классификация дорожного полотна» и «Название дороги»? – haguib

+0

Я сделал некоторые изменения в таблице и сценарии, где я удалил пробелы в именах столбцов, и я сохранил имена столбцов в нижнем регистре. однако кнопка поиска по-прежнему не срабатывает правильно! В чем может быть проблема? – haguib