- Descripción general
- Carga la biblioteca de visualizaciones
- Agrega datos ponderados
- Personaliza la capa de mapa de calor
La capa de mapa de calor permite a los clientes renderizar mapas de calor.
Descripción general
Un mapa de calor es una visualización que representa la intensidad de los datos en distintos puntos geográficos. Cuando se habilita la capa de mapa de calor, aparece una superposición de color sobre el mapa. De manera predeterminada, las áreas de mayor intensidad se muestran en color rojo, y las de menor intensidad aparecen en color verde.
Carga la biblioteca de visualizaciones
La capa de mapa de calor forma parte de la biblioteca google.maps.visualization
y no se carga de forma predeterminada. Las clases de visualización constituyen una biblioteca independiente separada del código principal de la API de Maps JavaScript. Para usar la funcionalidad que ofrece esta biblioteca, primero debes cargarla con el parámetro libraries
en la URL de arranque de la API de Maps JavaScript:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=visualization&callback=initMap">
</script>
Agrega una capa de mapa de calor
Para agregar una capa de mapa de calor, primero debes crear un objeto HeatmapLayer
nuevo y proporcionar algunos datos geográficos en forma de array o de objeto MVCArray[]
. Los datos pueden corresponder a un objeto LatLng
o a un objeto WeightedLocation
. Después de crear una instancia del objeto HeatmapLayer
, llama al método setMap()
para agregarlo al mapa.
En el siguiente ejemplo, se agregan 14 datos a un mapa de San Francisco.
/* 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);
Agrega datos ponderados
Un mapa de calor puede renderizar objetos LatLng
o WeightedLocation
, o una combinación de ambos. Ambos objetos representan datos únicos en un mapa, pero un objeto WeightedLocation
te permite, además, especificar una ponderación para cada uno de ellos. Aplicar una ponderación a un dato específico hará que WeightedLocation
se renderice con una mayor intensidad que un objeto LatLng
simple. La ponderación es una escala lineal en la que cada objeto LatLng
tiene una ponderación implícita de 1; agregar una sola WeightedLocation
de {location: new google.maps.LatLng(37.782, -122.441), weight: 3}
tendrá el mismo efecto que agregar google.maps.LatLng(37.782, -122.441)
tres veces.
Puedes combinar objetos weightedLocation
y LatLng
en un mismo array.
Utilizar un objeto WeightedLocation
en lugar de un objeto LatLng
puede ser útil en los siguientes casos:
- Si agregas grandes cantidades de datos en una única ubicación (renderizar un solo objeto
WeightedLocation
con una ponderación de 1,000 es más rápido que renderizar 1,000 objetosLatLng
) - Si deseas enfatizar ciertos datos conforme a valores arbitrarios (por ejemplo, puedes usar objetos
LatLng
cuando aplicas datos de terremotos, pero podría ser conveniente usar unaWeightedLocation
para medir la magnitud de cada terremoto en la escala de Richter)
/* 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);
Personaliza la capa de mapa de calor
Puedes personalizar la manera en que se renderizará tu mapa de calor con las siguientes opciones: Consulta la documentación sobre HeatmapLayerOptions
para obtener más información.
dissipating
: Especifica si deseas que el mapa de calor se disipe al aplicar el zoom. Cuando el valor de disipación es falso, el radio de influencia aumenta con el nivel de zoom para garantizar la preservación de la intensidad del color en cualquier ubicación geográfica. El valor predeterminado es verdadero.gradient
: Es el gradiente de color del mapa de calor, especificado como un array de strings de color CSS. Se admiten todos los colores CSS3, incluidos los RGBA, salvo los colores con nombres extendidos y los valores HSL(A).maxIntensity
: Es la intensidad máxima del mapa de calor. De forma predeterminada, los colores del mapa de calor se disponen en una escala dinámica según la máxima concentración de puntos de un píxel determinado del mapa. Esta propiedad te permite especificar un valor máximo fijo. Configurar la intensidad máxima puede ser útil cuando tu conjunto de datos contiene valores atípicos de intensidad inusualmente elevada.radius
: Es el radio de influencia de cada dato, en píxeles.opacity
: Es la opacidad del mapa de calor, expresada con un número entre 0 y 1.
En el siguiente ejemplo, se muestran algunas de las opciones de personalización disponibles.