3

Я пытаюсь установить данные слоя плавного слоя на моем Google Map, но я получаю сообщение об ошибке Request-URI Too Large. Я много искал, но не мог найти, как я могу заставить его работать либо методом POST, либо чем-то еще. Проблема заключается в where clause, но я не могу сократить предложение where. Есть ли кто-нибудь, кто может мне помочь или вести меня?Request-URI Too Large (слои таблицы Fusion Google Maps)

Заранее благодарим за любую помощь.

layer = new google.maps.FusionTablesLayer({ 
    map: googleMap, 
    heatmap: {enabled: false}, 
    query: { 
     select: "col4", 
     from: "tableID", 
     where: "", 
    }, 
    styles: [{ 
     polygonOptions: { 
      fillOpacity: 0.3 
     } 
    }, { 
     where: "col0 in ('Jefferson','Pulaski','Los Angeles','Denver','Middlesex','New Castle','Duval','Pinellas','Lee','Broward','Fulton','Cobb','Ada','Tazewell','Cook','Marion','Hendricks','Putnam','Adams','Boone','Orleans','Plymouth','Baltimore','Washington','Macomb','Genesee','Oakland','Hennepin','Jackson','Shelby','Granite','Forsyth','Mecklenburg','Wake','Douglas','Gloucester','Passaic','Bernalillo','Sandoval','Clark','New York','Montgomery','Hamilton','Tulsa','Oklahoma','Multnomah','Lane','Chester','Philadelphia','York','Lehigh','Kent','Horry','Davidson','Travis','Harris','Dallas','Fairfax','Chesterfield','King','Brown','Laramie','Kalamazoo','Cabarrus','San Diego','Pennington','Richland','Weber','Ramsey','Hartford') AND col3 in ('AL','AR','CA','CO','CT','DC','DE','FL','GA','ID','IL','IN','WV','OH','KY','LA','MA','MD','MI','MN','MO','TN','MT','NC','NE','NJ','NM','NV','NY','OK','OR','PA','RI','SC','TX','VA','VT','WA','WI','WY','SD')", 
     polygonOptions: { 
      fillColor: '#ffffff', 
      strokeColor: '#ff0000', 
      fillOpacity: 0.3 
     } 
    }], 
    options: { 
     styleId: 1, 
     templateId: 2 
    } 
}); 
+0

Почему вы говорите, что вы не можете сократить предложение where? Не можете ли вы добавить новый столбец с 2 или 3 символами/цифрами уникальный код и заменить col0 (county?)? Или используйте [FIPS] (http://en.wikipedia.org/wiki/FIPS_county_code) или другой определенный номер? – geocodezip

+1

Решением для этого может быть создание представления, основанного на вышеуказанном запросе. Тогда вам просто нужно запросить представление. – davidkonrad

+0

Этот запрос является динамическим, поэтому я не могу создать представление на основе любого запроса. –

ответ

3

После того, как вы работаете с динамическими запросами, вы всегда будете сталкиваться с запросом URI слишком большой проблемой. Одним из решений является генерация таблицы слияния, которую вы запрашиваете во время выполнения - это означает, что после выбора пользователем динамических параметров, которые вы создаете таблицу, или, скорее, представления со стороны сервера (php, asp, java) - и передайте созданный идентификатор таблицы к слою представления в вашем приложении. Недостатком является то, что вы потеряете всю динамику, поскольку после создания таблицы необходимо будет кэшировать на стороне Google, чтобы отображать ее правильно (еще 5-30 секунд поверх создания таблицы).

Слушайте мой совет: FT просто не предназначен для отображения данных с динамической фильтрацией. Могут применяться некоторые небольшие фильтры, например: фильтрация по одиночному значению одного поля, но это все. Чтобы достичь того, чего вы хотите, вы можете рассмотреть подход OpenLayers + . Это с открытым исходным кодом и ~ 100 раз быстрее, чем обходной путь выше.