Capa de mapa de calor

Seleccionar plataforma: Android iOS JavaScript
  1. Descripción general
  2. Carga la biblioteca de visualizaciones
  3. Agrega datos ponderados
  4. 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&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 objetos LatLng)
  • 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 una WeightedLocation 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.

Ver ejemplo