Markers

Use markers to draw a user's attention to a location on a map. This guide demonstrates how to use and customize markers in 3D maps. You can control the shape, size, and color of markers, in addition to the altitude at which they appear. The following example shows a basic marker:

3D Maps in Maps JavaScript provides two distinct marker classes, each optimized for specific uses. The following table shows differences and tradeoffs between the two available classes:

Capability MarkerElement Marker3DElement
Customization High (Supports custom HTML elements, core animation APIs, etc.) Low (Less customizable)
Performance Lower interaction performance (FPS drops with a large number of markers) Higher interaction performance (Optimized for rendering large datasets)
Recommended capacity Reliable interaction performance up to around 1,000 markers Recommended for handling over 1,000 markers

Customize color, scale and icon image

Customize the default marker's background, glyph, border color, and size.

Custom markers

Replace the default marker icon with a custom SVG resource.

Markers with graphics

Set marker altitude

You can set marker altitude by extruding the marker and setting the altitude.

Extruded marker

Make markers respond to click and keyboard events

Make a marker respond to clicks and keyboard events by adding a click event listener.

function initMap() {
  const map = new Map3DElement({
    center: { lat: 37.4690, lng: -122.1074, altitude: 0 },
    tilt: 67.5,
    range: 45000,
    mode: MapMode.HYBRID
  });

  const interactiveMarker = new google.maps.marker.Marker3DInteractiveElement({
    map,
    position: {lat: 37.4239163, lng: -122.0947209},
  });

  interactiveMarker.addEventListener('gmp-click', (event) => {
    // Handle the click event.
    // ...
  });
}

Set marker collision behavior

Specify how a marker should behave when it collides with another marker or map label.

const marker = new Marker3DElement({
    position: {lat, lng},
    collisionBehavior: google.maps.CollisionBehavior.REQUIRED
});

Marker performance

Custom HTML markers (MarkerElement) offer lower performance than standard 3D markers (Marker3DElement). For applications with more than 1,000 markers, the Marker3dElement class is strongly encouraged to ensure optimal performance.

Next step