- Обзор
- Загрузите библиотеку визуализации
- Добавьте взвешенные точки данных
- Настройка слоя тепловой карты
Слой тепловой карты обеспечивает рендеринг тепловых карт на стороне клиента.
Обзор
Тепловая карта — это визуализация, используемая для отображения интенсивности данных в географических точках. Когда слой тепловой карты включен, поверх карты появится цветное наложение. По умолчанию области с более высокой интенсивностью будут окрашены в красный цвет, а области с более низкой интенсивностью — в зеленый.
Загрузите библиотеку визуализации
Слой тепловой карты является частью библиотеки google.maps.visualization
и не загружается по умолчанию. Классы визуализации представляют собой автономную библиотеку, отдельную от основного кода API JavaScript Карт. Чтобы использовать функциональные возможности, содержащиеся в этой библиотеке, необходимо сначала загрузить ее с помощью параметра libraries
в URL-адресе начальной загрузки Maps JavaScript API:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=visualization&callback=initMap">
</script>
Добавьте слой тепловой карты
Чтобы добавить слой тепловой карты, необходимо сначала создать новый объект HeatmapLayer
и предоставить ему некоторые географические данные в форме массива или объекта MVCArray[]
. Данные могут быть либо объектом LatLng
, либо объектом WeightedLocation
. После создания экземпляра объекта HeatmapLayer
добавьте его на карту, вызвав метод setMap()
.
В следующем примере на карту Сан-Франциско добавляется 14 точек данных.
/* Data points defined as an array of LatLng objects */ var heatmapData = [ new google.maps.LatLng(37.782, -122.447), new google.maps.LatLng(37.782, -122.445), new google.maps.LatLng(37.782, -122.443), new google.maps.LatLng(37.782, -122.441), new google.maps.LatLng(37.782, -122.439), new google.maps.LatLng(37.782, -122.437), new google.maps.LatLng(37.782, -122.435), new google.maps.LatLng(37.785, -122.447), new google.maps.LatLng(37.785, -122.445), new google.maps.LatLng(37.785, -122.443), new google.maps.LatLng(37.785, -122.441), new google.maps.LatLng(37.785, -122.439), new google.maps.LatLng(37.785, -122.437), new google.maps.LatLng(37.785, -122.435) ]; var sanFrancisco = new google.maps.LatLng(37.774546, -122.433523); map = new google.maps.Map(document.getElementById('map'), { center: sanFrancisco, zoom: 13, mapTypeId: 'satellite' }); var heatmap = new google.maps.visualization.HeatmapLayer({ data: heatmapData }); heatmap.setMap(map);
Добавьте взвешенные точки данных
Тепловая карта может отображать либо объекты LatLng
, либо WeightedLocation
, либо их комбинацию. Оба объекта представляют одну точку данных на карте, но объект WeightedLocation
позволяет дополнительно указать вес для этой точки данных. Применение веса к точке данных приведет к тому, что WeightedLocation
будет отображаться с большей интенсивностью, чем простой объект LatLng
. Вес представляет собой линейную шкалу, в которой каждый объект LatLng
имеет неявный вес, равный 1. Добавление одного WeightedLocation
{location: new google.maps.LatLng(37.782, -122.441), weight: 3}
будет иметь тот же эффект, что и добавив google.maps.LatLng(37.782, -122.441)
три раза. Вы можете смешивать объекты weightedLocation
и LatLng
в одном массиве.
Использование объекта WeightedLocation
вместо LatLng
может быть полезно в следующих случаях:
- Добавление больших объемов данных в одном месте. Отрисовка одного объекта
WeightedLocation
с весом 1000 будет быстрее, чем отрисовка 1000 объектовLatLng
. - Применение акцента к вашим данным на основе произвольных значений. Например, вы можете использовать объекты
LatLng
при построении графика данных о землетрясениях, но вы можете использоватьWeightedLocation
для измерения магнитуды каждого землетрясения по шкале Рихтера.
/* Data points defined as a mixture of WeightedLocation and LatLng objects */ var heatMapData = [ {location: new google.maps.LatLng(37.782, -122.447), weight: 0.5}, new google.maps.LatLng(37.782, -122.445), {location: new google.maps.LatLng(37.782, -122.443), weight: 2}, {location: new google.maps.LatLng(37.782, -122.441), weight: 3}, {location: new google.maps.LatLng(37.782, -122.439), weight: 2}, new google.maps.LatLng(37.782, -122.437), {location: new google.maps.LatLng(37.782, -122.435), weight: 0.5}, {location: new google.maps.LatLng(37.785, -122.447), weight: 3}, {location: new google.maps.LatLng(37.785, -122.445), weight: 2}, new google.maps.LatLng(37.785, -122.443), {location: new google.maps.LatLng(37.785, -122.441), weight: 0.5}, new google.maps.LatLng(37.785, -122.439), {location: new google.maps.LatLng(37.785, -122.437), weight: 2}, {location: new google.maps.LatLng(37.785, -122.435), weight: 3} ]; var sanFrancisco = new google.maps.LatLng(37.774546, -122.433523); map = new google.maps.Map(document.getElementById('map'), { center: sanFrancisco, zoom: 13, mapTypeId: 'satellite' }); var heatmap = new google.maps.visualization.HeatmapLayer({ data: heatMapData }); heatmap.setMap(map);
Настройка слоя тепловой карты
Вы можете настроить способ отображения вашей тепловой карты с помощью следующих параметров тепловой карты. Дополнительную информацию см. в документации HeatmapLayerOptions
.
-
dissipating
: определяет, рассеиваются ли тепловые карты при масштабировании. Если значение рассеивания ложно, радиус влияния увеличивается с увеличением уровня масштабирования, чтобы гарантировать сохранение интенсивности цвета в любом заданном географическом местоположении. По умолчанию истинно. -
gradient
: цветовой градиент тепловой карты, заданный как массив цветовых строк CSS. Поддерживаются все цвета CSS3 , включая RGBA, за исключением расширенных именованных цветов и значений HSL(A). -
maxIntensity
: максимальная интенсивность тепловой карты. По умолчанию цвета тепловой карты динамически масштабируются в соответствии с наибольшей концентрацией точек в любом конкретном пикселе карты. Это свойство позволяет указать фиксированный максимум. Установка максимальной интенсивности может оказаться полезной, если ваш набор данных содержит несколько выбросов необычно высокой интенсивности. -
radius
: радиус влияния для каждой точки данных в пикселях. -
opacity
: непрозрачность тепловой карты, выраженная числом от 0 до 1.
В приведенном ниже примере показаны некоторые доступные параметры настройки.