2013-11-28 1 views
1

У меня есть карта, которая отображает два слоя таблицы слияния. Я разработал их оба с использованием атрибута styleId, чтобы использовать стили, определенные в пользовательском интерфейсе таблицы Fusion, вместо использования атрибута styles при создании слоя в картах Google. Из maps docs в нем упоминается, что у вас может быть до 5 слоев таблицы слияния, причем один из них стилизован.Карта Google с двумя слоями Fusion Table не отображает второй уровень

Стили могут применяться только к одному слою Fusion Tables для каждой карты. Вы можете применить к этому слою до пяти стилей.

То, что я не 100% ясно, если это относится к строковому только стилям, например:

layer1 = new google.maps.FusionTablesLayer({ 
    query: { 
    from: table1Id 
    }, 
    styles: [ 
    {markerOptions: {iconName: 'red_blank'}, where: 'age > 50'}, 
    {markerOptions: {iconName: 'grn_blank'}, where: 'age <= 50'} 
    ] 
}); 

layer2 = new google.maps.FusionTablesLayer({ 
    query: { 
    from: table2Id 
    }, 
    styles: [ // This won't work because you can only style one table inline 
    {markerOptions: {iconName: 'red_blank'}, where: 'age > 50'}, 
    {markerOptions: {iconName: 'grn_blank'}, where: 'age <= 50'} 
    ] 
}); 

или если она также относится к стилям, определенным в сводной таблице UI:

layer1 = new google.maps.FusionTablesLayer({ 
    query: { 
    from: table1Id 
    }, 
    options: { 
    styleId: 2, // Obtained from the fusion table UI 
    templateId: 1 // Obtained from the fusion table UI 
    } 
}) 

layer2 = new google.maps.FusionTablesLayer({ 
    query: { 
    from: table2Id 
    }, 
    options: { 
    styleId: 2, // Obtained from the fusion table UI 
    templateId: 1 // Obtained from the fusion table UI 
    } 
}) 

Из моего чтения документов, казалось бы, это только первый тип, который не допускается на нескольких уровнях.

Стиль оформления таблицы на самом деле не упоминается в документах Google Maps, но именно так создается код вставки, сгенерированный в таблицах Fusion при публикации «Опубликовать» карту, и она фактически работает для отдельных слоев ,

Если я включаю оба слоя (layer1.setMap(map)), отображается только один из слоев. Если я отключу слой, другой появится правильно.

Любая помощь будет принята с благодарностью.

+1

Действительно ли вы используете один и тот же слой с переменным именем '' для обоих слоев? имена переменных не могут быть разделены, 1 слой перезапишет другой слой. –

+0

Нет, я использую разные переменные. Я просто иллюстрировал два синтаксиса, которые я использовал. Я буду обновлять примеры для ясности –

ответ

0

Он работает со смешением встроенных стилей и styleId.

Демонстрационный с 5 слоями, 4-х слоев используют styleId и 1 слой использует 5 инлайн-стили, как вы видите результат, как ожидается, 9 различных стилизованных маркеров: http://jsfiddle.net/doktormolle/Zk2CE/

проблема с вашей попытки: вы всегда используете тот же where -clause в query (в настоящее время нет where -clause, все строки будут выбраны).

При определении where -clause в стиле это будет применить стиль к выбранным элементам, для всех других элементов (которые не будут соответствовать любому where -clause в style) стиль по умолчанию будет применяться (например, красная точка для маркеров)

результата: когда конкретные строки (элементы) будут выбраны query более 1 слоя, только 1 style/styleId может быть применена к этим пунктам (обычно набор стилей с последним слоем, который был добавлен на карту).

+0

Я использую предложения 'where' в моем фактическом коде. Я просто пытался упростить его для примера (я вытягиваю из двух разных таблиц, один с полигонами и один с маркерами). Из вашего примера, однако, очевидно, что он должен работать. Я попытаюсь воспроизвести свой сценарий в JSFiddle, чтобы узнать, могу ли я определить, что я делаю по-другому. –

+0

Хммм Я создал минимальную версию на JSFiddle с моим собственным кодом, и стили, похоже, применяются правильно. Я думаю, что в конце концов это могло быть связано с ошибкой Fusion Tables, с которой я столкнулся раньше на этой неделе (примерно в то же время это началось), где изменение стилей в пользовательском интерфейсе Fusion Tables не создало новый styleId. После обращения в службу поддержки они сказали, что это известная проблема, и что мне придется добавить новую вкладку «Карта», чтобы обойти это. Спасибо, что мотивировал меня написать минимальный код в JSFiddle @ Dr.Molle! –

Смежные вопросы