Ошибка запроса таблицы Fusion Google - сравнение времени

<div id="title"><h2><center> Visualisation of Parking Requests</center></h2> </div>

<div id="options"> 
<form>
<h3>Display:
<select name="sortby" onchange="allmarks(this.value)">
<option id="None" value="None">None</option>
<option id="All" value="All">All</option>
<option id="Time" value="Time">Time</option>
<option id="Rating" value="Rating">Rating</option>
</select>


<div id="Timerange">
Enter a Time range: 
to : 

</div>

<div id="Raterange">
Enter a Rating range : 
to : 


</div>
</h3></form></div>

Я разрабатываю простую html-программу, которая имеет одно раскрывающееся меню с параметрами None, All, Time и Rating. Я использую таблицу слияния Google с столбцами, имеющими произвольные сгенерированные значения. Столбцами являются Cid, широта, долгота, время и рейтинг.

Когда я выбираю "Все". все точки в таблице слияния Google отображаются на карте, когда я выбираю "Рейтинг", я могу ввести определенный диапазон значений и затем запросить с помощью этих ограничений. Я сталкиваюсь с проблемами, когда я пытаюсь сделать то же самое с "Время". В функции "timefunc()" предложение where запроса выполняется неправильно. Я попытался использовать параметр публикации таблицы Fusion после выполнения фильтрации, но это не помогло.

Как мне решить эту проблему? Мне нужно это, чтобы отобразить время, введенное пользователем в поле ввода, но я просто не могу построить соответствующий запрос, который он будет запускать, и отобразить правильные результаты.

2 ответа

Еще одно решение, которое я нашел для этой проблемы, заключалось в том, чтобы разбить вход так, чтобы 13:30 разделился на 13,30 и был сохранен в массив. Таблицы слияния также должны иметь отдельные столбцы, такие как час, минута, а затем мы запрашиваем их отдельно. Вот обновленный timefunc() -

Примечание. Таблица слияния, которую я использую, отличается от нового идентификатора таблицы слияния -'17rCPfwugHVJrCbEHGKNOp21e7UsVQxjubUhRZSch, он хранится в переменной под названием tableid1.

function timefunc()
{ 
 var x = document.getElementById("time1").value;
 var y = document.getElementById("time2").value;

 var ax=x.split(":");
 var by=y.split(":");

 var whereClause = 'hour >='+ax[0]+' AND hour <='+by[0]+' AND minute >='+ax[1]+' AND minute <='+by[1]; 

 while (i!=0){layer.setMap(null);i--;}

 layer = new google.maps.FusionTablesLayer({
query: {
 select: 'Latitude',
 from: tableid1,
 where: whereClause
 }
 });
 layer.setMap(map);
 i++;
 }


Я не нашел подробностей об этом в документации, но, как кажется, вы должны явно передать значения в виде строк:

var whereClause = "Time >'"+x+"' AND Time<='"+y+"'";

Примечание: вы должны использовать формат hh:ss в полях ввода

licensed under cc by-sa 3.0 with attribution.