使用 HTML 创建标记

您可以使用自定义 HTML 和 CSS 来创建具有丰富视觉效果的标记,这些标记具有交互功能和动画效果。所有 Marker3DElement 实例都会作为 HTML 元素添加到 DOM 中;您可以使用 Marker3DElement 属性访问这些元素,还能像操控任何其他 DOM 元素一样来操控它们。

CSS

@keyframes marker-bounce {
    0% {
        transform: translateY(0);
    }
    30% {
        transform: translateY(-12px);
    }
    55% {
        transform: translateY(-5px);
    }
    75% {
        transform: translateY(-10px);
    }
    100% {
        transform: translateY(-8px);
    }
}

html,
gmp-map-3d {
    height: 100%;
}

html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
}

:root {
    --google-blue: #1a73e8;
    --google-gray: #3c4043;
    --google-silver: #dadce0;
    --google-white: #ffffff;
}

.custom-marker {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 16px;
    background-color: var(--google-white);
    color: var(--google-blue);
    border: 1px solid var(--google-silver);
    border-radius: 20px;
    font-family: 'Google Sans', 'Roboto', Arial, sans-serif;
    font-size: 14px;
    font-weight: 600;
    box-shadow:
        0 4px 6px rgba(60, 64, 67, 0.1),
        0 1px 3px rgba(60, 64, 67, 0.2);
    white-space: nowrap;
    position: relative;
    cursor: default;
    transition:
        background-color 0.3s ease-in-out,
        box-shadow 0.3s ease-in-out;
    user-select: none;
}

.custom-marker:hover {
    background-color: #f8f9fa;
    box-shadow:
        0 8px 16px rgba(60, 64, 67, 0.2),
        0 2px 4px rgba(60, 64, 67, 0.25);
    animation: marker-bounce 0.5s ease-out forwards;
}

.custom-marker::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-top: 8px solid var(--google-silver);
    transition: border-top-color 0.2s ease-in-out;
}

.custom-marker::before {
    content: '';
    position: absolute;
    top: 99%;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 7px solid var(--google-white);
    z-index: 1;
    transition: border-top-color 0.2s ease-in-out;
}

.custom-marker:hover::after {
    border-top-color: #cacdd2;
}

.custom-marker:hover::before {
    border-top-color: #f8f9fa;
}

HTML

<html>
    <head>
        <title>3D Marker HTML</title>
        <link rel="stylesheet" type="text/css" href="./style.css" />
        <script
            async
            src="https://maps.googleapis.com/maps/api/js?loading=async&key=AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8&libraries=maps3d"></script>
    </head>
    <body>
        <gmp-map-3d
            center="40.7489,-73.9680,0"
            heading="315"
            tilt="65"
            range="800"
            mode="SATELLITE">
            <gmp-marker position="40.7489,-73.9680" title="UN Headquarters">
                <div class="custom-marker">
                    United Nations Secretariat Building
                </div>
            </gmp-marker>
        </gmp-map-3d>
    </body>
</html>

试用示例

简单的 HTML 标记

以下示例展示了如何创建基本的自定义标记:

<html>
<head>
    <title>3D Map - Declarative</title>
    <style>
        html,
        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        gmp-map-3d {
            height: 100%;
        }
    </style>
</head>
<body>
    <gmp-map-3d center="37.4239163, -122.0947209, 0" tilt="67.5" range="1000" mode="hybrid">
        <gmp-marker-3d position="37.4239163, -122.0947209,50" altitude-mode="absolute" extruded="true" label="Basic Marker"></gmp-marker-3d>
    </gmp-map-3d>
    <script async
        src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&v=beta&libraries=maps3d"></script>
</body>
</html>

交互式标记

此示例展示了如何使用 HTML 创建交互式标记。

<html>
  <head>
    <title>Pure HTML Interactive Marker Demo</title>
    <style>
      html,
      body {
        height:100%;
        margin: 0;
        padding: 0;
      }
      gmp-map-3d {
        height: 400px;
        width: 800px;
      }
    </style>
  </head>
  <body>
    <gmp-map-3d center="37.819852,-122.478549" tilt="75" range="2000" heading="330" mode="hybrid">
      <gmp-marker-3d-interactive position="37.819852,-122.478549,100"></gmp-marker-3d-interactive>
    </gmp-map-3d>
    <script async src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&v=alpha&libraries=maps3d">
    </script>
  </body>
</html>