Google Maps JavaScript API долгое время поддерживал интеграцию с сервисом Google Fusion Tables через специальный слой данных — FusionTablesLayer. Этот механизм позволял отображать на карте данные из облачных таблиц с географической привязкой без необходимости самостоятельно строить backend или обрабатывать GeoJSON на стороне клиента.
Fusion Tables представляли собой облачную базу данных, в которой строки могли содержать географические типы данных:
Google Maps JavaScript API подключал эти данные через слой:
Ключевая особенность — обработка данных происходила на стороне Google, а не в браузере.
Создание слоя выполнялось через объект
google.maps.FusionTablesLayer.
Пример базовой инициализации:
const layer = new google.maps.FusionTablesLayer({
query: {
select: 'location',
from: '1abcDEFghiJKlmnOPQRstuVWXyz'
}
});
layer.setMap(map);
Где:
select — поле с географическими даннымиfrom — ID Fusion Tablemap — экземпляр картыFusion Tables использовали упрощённый SQL-диалект. Основные операторы:
Определяет, какие колонки используются:
select: 'geometry'
или
select: 'latitude'
Идентификатор таблицы:
from: 'TABLE_ID'
Фильтрация данных:
where: "population > 100000"
Сортировка результатов:
orderBy: 'population DESC'
FusionTablesLayer поддерживал не только запросы, но и стилизацию данных:
const layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: '1abcDEFghiJKlmnOPQRstuVWXyz',
where: "type = 'city'"
},
styles: [
{
where: "population > 1000000",
markerOptions: {
iconName: "large_red"
}
},
{
where: "population <= 1000000",
markerOptions: {
iconName: "small_blue"
}
}
]
});
layer.setMap(map);
Fusion Tables поддерживали разные типы геоданных:
Использовались для маркеров:
Использовались для маршрутов и дорог:
Использовались для границ:
Слой можно было обновлять без пересоздания объекта:
layer.setOptions({
query: {
select: 'geometry',
from: 'TABLE_ID',
where: "category = 'restaurant'"
}
});
Это позволяло реализовывать:
Модель имела ряд фундаментальных ограничений:
Fusion Tables Layer был тесно связан с архитектурой раннего веба, где:
С развитием экосистемы произошло смещение в сторону:
В результате Fusion Tables был признан устаревшим и впоследствии отключён.
После прекращения поддержки стали использоваться другие подходы:
map.data.loadGeoJson('data.json');
Преимущества:
Использование собственного backend:
Более современный подход:
Типичный процесс переноса включал:
Пример структуры GeoJSON:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [76.8897, 43.2389]
},
"properties": {
"name": "City",
"population": 1200000
}
}
Код, написанный под FusionTablesLayer, часто требовал полной переработки:
Несмотря на устаревание, Fusion Tables сыграли важную роль:
Его модель стала промежуточным этапом между статическими картами и современными интерактивными геоприложениями с полноценными API и потоковой отрисовкой данных.