Обновите таблицу jqGrid с результатами запроса Fusion Tables на странице Google Maps v3 - PullRequest
0 голосов
/ 10 октября 2011

Я хочу понять, как обновить таблицу jqGrid из Fusion Tables (FT) -

, в настоящий момент я могу искать или прокручивать карту Google, отправлять прослушиватель событий, который составляет запрос FT изпространственные границы области просмотра / карты, чтобы получить новый набор результатов.Я хочу использовать новую строку запроса FT (или мог бы использовать код Google для получения данных - query.send (getData);), чтобы обновить таблицу jqGrid новыми значениями.

До того, как я начал использовать jqGridЯ попытался / преуспел с API визуализации Google, и некоторые из этого кода ниже.Кто-нибудь может подсказать, как перейти от table.draw к загрузке / перезагрузке таблицы jqGrid?Заранее большое спасибо.

function tilesLoaded() {
        google.maps.event.clearListeners(map, 'tilesloaded');
        google.maps.event.addListener(map, 'zoom_changed', getSpatialQuery);
        google.maps.event.addListener(map, 'dragend', getSpatialQuery);
        getSpatialQuery();  
    }   

    function getSpatialQuery() {
      sw = map.getBounds().getSouthWest();
      ne = map.getBounds().getNorthEast();
      var spatialQuery = "ST_INTERSECTS(latitude, RECTANGLE(LATLNG(" + sw.lat() + "," + sw.lng() + "), LATLNG(" + ne.lat() + "," + ne.lng() + ")))";

      changeDataTable(spatialQuery);
    }

function changeDataTable(spatialQuery) {
  var whereClause = "";
  if(spatialQuery) {
    whereClause =  " WHERE " + spatialQuery;
  }
  var queryText = encodeURIComponent("SELECT 'latitude', 'longitude', 'name' FROM xxxxxxxx" + whereClause + " LIMIT 50");
  var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq='  + queryText);
  query.send(getData);
}

function getData(response) {
  var table = new google.visualization.Table(document.getElementById('visualization'));
  table.draw(response.getDataTable(), {showRowNumber: true});
}

О, и я использовал код Олега jqGrid возвращает пустые ячейки в качестве основы для проверки, могу ли я получить простую таблицу с несколькими вариантами выбораданные из моего FT - это работало нормально с простым модом

url: 'http://www.google.com/fusiontables/api/query?sql=' +

1 Ответ

0 голосов
/ 27 октября 2011

В случае, если это кому-то поможет, я взял некоторый код и вставил его ниже:

// You can get the map bounds via then pass it via a function (below is hacked from several functions
sw = map.getBounds().getSouthWest();
ne = map.getBounds().getNorthEast();
var whereClause = "ST_INTERSECTS(latitude, RECTANGLE(LATLNG(" + sw.lat() + "," + sw.lng() + "), LATLNG(" + ne.lat() + "," + ne.lng() + ")))";

//construct the URL to get the JSON
var queryUrlHead = 'http://www.google.com/fusiontables/api/query?sql=';
var queryUrlTail = '&jsonCallback=?'; // 
var queryOrderBy = ' ORDER BY \'name\' ASC';
var queryMain = "SELECT * FROM " + tableid + whereClause + queryOrderBy + " LIMIT 100";
var queryurl = encodeURI(queryUrlHead + queryMain + queryUrlTail);

//use the constructed URL to update the jqGrid table - this is the part that I didn't know in my above question
$("#gridTable").setGridParam({url:queryurl});
$("#gridTable").jqGrid('setGridParam',{datatype:'jsonp'}).trigger('reloadGrid');
...