FeatureStyleFunction
— это место, где вы определяете логику для выборочного стилизации объектов в наборе данных. На основе этой логики он возвращает FeatureStyleOptions
. Если логика стилизации не требуется, вы можете использовать FeatureStyleOptions
для установки стилей напрямую. На этой странице показано, как добавить набор данных на карту и применить стили.
Предварительные условия
Прежде чем продолжить, у вас должен быть идентификатор карты и стиль карты, а также идентификатор набора данных.
Свяжите идентификатор набора данных со стилем карты
Выполните следующие шаги, чтобы связать набор данных с используемым стилем карты:
- В Google Cloud Console перейдите на страницу «Наборы данных» .
- Щелкните имя набора данных. Появится страница сведений о наборе данных .
- Откройте вкладку «Предварительный просмотр» .
- Прокрутите до пункта «ДОБАВИТЬ СТИЛЬ КАРТЫ» и нажмите.
- Установите флажки напротив стилей карты, которые требуется связать, а затем нажмите СОХРАНИТЬ .
Используйте простые правила стиля
Самый простой способ стилизовать объекты — передать FeatureStyleOptions
для определения атрибутов стиля, таких как цвет, непрозрачность и толщина линии. Примените параметры стиля объекта непосредственно к векторному слою набора данных или используйте их вместе с FeatureStyleFunction
.
Машинопись
const styleOptions = { strokeColor: 'green', strokeWeight: 2, strokeOpacity: 1, fillColor: 'green', fillOpacity: 0.3, };
JavaScript
const styleOptions = { strokeColor: "green", strokeWeight: 2, strokeOpacity: 1, fillColor: "green", fillOpacity: 0.3, };
Используйте правила декларативного стиля
Используйте FeatureStyleFunction
, чтобы декларативно устанавливать правила стиля и применять их ко всему набору данных. Примените FeatureStyleOptions
к объекту на основе значений атрибутов набора данных. Вы также можете вернуть null
из функции стиля объекта, например, если вы хотите, чтобы подмножество объектов оставалось невидимым. В этом примере показана функция стиля, которая окрашивает набор точек на основе атрибутов данных:
Машинопись
function setStyle(/* FeatureStyleFunctionOptions */ params) { // Get the dataset feature, so we can work with all of its attributes. const datasetFeature = params.feature; // Get all of the needed dataset attributes. const furColors = datasetFeature.datasetAttributes['CombinationofPrimaryandHighlightColor']; // Apply styles. Fill is primary fur color, stroke is secondary fur color. switch (furColors) { case 'Black+': return /* FeatureStyleOptions */ { fillColor: 'black', pointRadius: 8 }; break; case 'Cinnamon+': return /* FeatureStyleOptions */ { fillColor: '#8b0000', pointRadius: 8 }; break; case 'Cinnamon+Gray': return /* FeatureStyleOptions */ { fillColor: '#8b0000', strokeColor: 'gray', pointRadius: 6 }; break; case 'Cinnamon+White': return /* FeatureStyleOptions */ { fillColor: '#8b0000', strokeColor: 'white', pointRadius: 6 }; break; case 'Gray+': return /* FeatureStyleOptions */ { fillColor: 'gray', pointRadius: 8 }; break; case 'Gray+Cinnamon': return /* FeatureStyleOptions */ { fillColor: 'gray', strokeColor: '#8b0000', pointRadius: 6 }; break; case 'Gray+Cinnamon, White': return /* FeatureStyleOptions */ { fillColor: 'silver', strokeColor: '#8b0000', pointRadius: 6 }; break; case 'Gray+White': return /* FeatureStyleOptions */ { fillColor: 'gray', strokeColor: 'white', pointRadius: 6 }; break; default: // Color not defined. return /* FeatureStyleOptions */ { fillColor: 'yellow', pointRadius: 8 }; break; } }
JavaScript
function setStyle(/* FeatureStyleFunctionOptions */ params) { // Get the dataset feature, so we can work with all of its attributes. const datasetFeature = params.feature; // Get all of the needed dataset attributes. const furColors = datasetFeature.datasetAttributes["CombinationofPrimaryandHighlightColor"]; // Apply styles. Fill is primary fur color, stroke is secondary fur color. switch (furColors) { case "Black+": return /* FeatureStyleOptions */ { fillColor: "black", pointRadius: 8 }; break; case "Cinnamon+": return /* FeatureStyleOptions */ { fillColor: "#8b0000", pointRadius: 8 }; break; case "Cinnamon+Gray": return /* FeatureStyleOptions */ { fillColor: "#8b0000", strokeColor: "gray", pointRadius: 6, }; break; case "Cinnamon+White": return /* FeatureStyleOptions */ { fillColor: "#8b0000", strokeColor: "white", pointRadius: 6, }; break; case "Gray+": return /* FeatureStyleOptions */ { fillColor: "gray", pointRadius: 8 }; break; case "Gray+Cinnamon": return /* FeatureStyleOptions */ { fillColor: "gray", strokeColor: "#8b0000", pointRadius: 6, }; break; case "Gray+Cinnamon, White": return /* FeatureStyleOptions */ { fillColor: "silver", strokeColor: "#8b0000", pointRadius: 6, }; break; case "Gray+White": return /* FeatureStyleOptions */ { fillColor: "gray", strokeColor: "white", pointRadius: 6, }; break; default: // Color not defined. return /* FeatureStyleOptions */ { fillColor: "yellow", pointRadius: 8 }; break; } }
Примените стиль к векторному слою набора данных
Чтобы применить стили в функции стиля объекта:
- Получите векторный слой набора данных, вызвав
map.getDatasetFeatureLayer()
и передав идентификатор набора данных. - Примените стиль, установив параметры стиля объекта (например,
styleOptions
) или функцию (например,setStyle
) на слое набора данных.
Машинопись
const datasetLayer = map.getDatasetFeatureLayer(datasetId); datasetLayer.style = styleOptions;
JavaScript
const datasetLayer = map.getDatasetFeatureLayer(datasetId); datasetLayer.style = styleOptions;
Удаление стиля со слоя
Чтобы удалить стиль со слоя, установите для style
значение null
:
featureLayer.style = null;
Вы также можете вернуть null
из функции стиля объекта, например, если вы хотите, чтобы подмножество объектов оставалось невидимым.
Добавить текст авторства
На вашей карте должны отображаться все необходимые атрибуты при отображении загруженных наборов данных на Картах Google. Текст указания авторства не должен закрывать или мешать логотипу Google.
Один из способов добавить текст указания — использовать пользовательские элементы управления для размещения произвольного HTML-кода в стандартных позициях на карте. В следующем примере кода показана функция, которая программно создает один такой настраиваемый элемент управления:
Машинопись
function createAttribution(map) { const attributionLabel = document.createElement('div'); // Define CSS styles. attributionLabel.style.backgroundColor = '#fff'; attributionLabel.style.opacity = '0.7'; attributionLabel.style.fontFamily = 'Roboto,Arial,sans-serif'; attributionLabel.style.fontSize = '10px'; attributionLabel.style.padding = '2px'; attributionLabel.style.margin = '2px'; attributionLabel.textContent = 'Data source: NYC Open Data'; return attributionLabel; }
JavaScript
function createAttribution(map) { const attributionLabel = document.createElement("div"); // Define CSS styles. attributionLabel.style.backgroundColor = "#fff"; attributionLabel.style.opacity = "0.7"; attributionLabel.style.fontFamily = "Roboto,Arial,sans-serif"; attributionLabel.style.fontSize = "10px"; attributionLabel.style.padding = "2px"; attributionLabel.style.margin = "2px"; attributionLabel.textContent = "Data source: NYC Open Data"; return attributionLabel; }
После определения элемента управления его можно добавить на карту во время инициализации, как показано здесь:
Машинопись
// Create an attribution DIV and add the attribution to the map. const attributionDiv = document.createElement('div'); const attributionControl = createAttribution(map); attributionDiv.appendChild(attributionControl); map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push(attributionDiv);
JavaScript
// Create an attribution DIV and add the attribution to the map. const attributionDiv = document.createElement("div"); const attributionControl = createAttribution(map); attributionDiv.appendChild(attributionControl); map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push(attributionDiv);