Skip to content

GridLayer

Example

Example Source Code
vue
<template>
  <div style="height: 500px">
    <div style="height: 470px">
      <mb-map :zoom="8">
        <mb-tianditu-layer />
        <mb-grid-layer
          :data="__RESOURCE_URL__ + 'json/beijing_price.json'"
          :position="(d) => d.lnglat"
          :color-weight="(d) => d.transPrice"
          color-aggregation="MEAN"
          :elevation-weight="(d) => d.transPrice"
          elevation-aggregation="MEAN"
          :pickable="true"
          :elevation-scale="50"
          @mousemove="mousemoveHandler"
          @mouseleave="mouseleaveHandler"
        />
      </mb-map>
    </div>
    <div style="height: 30px; margin: 10px 10px">
      <p v-if="meanPrice" class="text-muted">Price: {{ meanPrice / 10000 }}</p>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const meanPrice = ref(0)

const mousemoveHandler = ({ object }: { object: any }) => {
  meanPrice.value = object.elevationValue
}
const mouseleaveHandler = () => {
  meanPrice.value = 0
}
</script>

API

PROPS

NameDescriptionTypeDefault
idLayer ID. A unique identifier for the layer.string-
positionFunction to retrieve the position of each data point. This function should accept a data item as an argument and return an array representing the [longitude, latitude] or [longitude, latitude, altitude/elevation].AnyFunc-
auto-highlightWhen this property is true and pickable is also true, the object under the mouse cursor will be highlighted. This provides visual feedback when hovering over interactive elements.booleanfalse
cell-sizeRadius of the cell in meters.number1000
color-aggregationAggregation method for cell colors. This property takes effect when used in conjunction with color-weight. Available options are: SUM, MEAN, MIN, MAX.string ('SUM', 'MEAN', 'MIN', 'MAX')'SUM'
color-rangeColor range used for mapping values to colors. This is an array of color strings, typically in RGB or hexadecimal format.string[][ "rgb(255, 255, 178)", "rgb(254, 217, 118)", "rgb(254, 178, 76)", "rgb(253, 141, 60)", "rgb(240, 59, 32)", "rgb(189, 0, 38)" ]
color-valueFunction to calculate the color for each cell. For example, you can calculate the color based on the number of points within the cell (density heatmap): (points) => points.length. If this property is set, color-weight and color-aggregation are disabled.AnyFunc-
color-weightFunction to calculate the color weight for each point within a cell. This property takes effect when used in conjunction with color-aggregation.AnyFunc-
coverageThe coverage ratio of the cell grid. This value is between 0 and 1. The final rendered cell radius will be cellSize * coverage.number1
dataSource data for the layer. This can be a string representing a URL, an object, an array, or a Promise that resolves to data.string / IndexAny / AnyArr / Promise<any>''
highlight-colorThe color to blend with the original color of the highlighted object. This creates the highlight effect. The value can be a color string or an RGBA array.string / number[][255, 255, 128, 1]
highlighted-object-indexThe index of the currently highlighted object within the data. A value of -1 indicates that no object is currently highlighted.number-1
elevation-valueFunction to calculate the elevation/height of each cell. For example, you can calculate the height based on the number of points within the cell: (points) => points.length. If this property is set, elevation-weight and elevation-aggregation are disabled.AnyFunc-
elevation-weightFunction to calculate the elevation weight for each point within a cell. This property takes effect when used in conjunction with elevation-aggregation.AnyFunc() => 1
elevation-aggregationAggregation method for cell elevation/height. Available options are: SUM, MEAN, MIN, MAX.string ('SUM', 'MEAN', 'MIN', 'MAX')'SUM'
elevation-scaleScaling factor for the height of the cells.number1
materialWhether the cells have material properties (e.g., lighting, shading).booleantrue
opacityThe opacity of the cell (0-1). 0 is fully transparent, and 1 is fully opaque.number1
pickableWhether the layer responds to mouse events. If false, the component will not emit mouse-related events (e.g., click, hover).booleanfalse
showWhether the layer is visible. If true, the layer will be rendered; otherwise, it will be hidden.booleantrue
strokedWhether the cells have an outline (stroke).booleanfalse

EVENTS

NameDescriptionParameters
createdInitialization complete event-
mousemove-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }
mouseleave--
click-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }

SLOTS

NameDescription

METHODS

NameDescriptionDefinition