На этой странице показано, как управлять следующими параметрами расширенных маркеров:
- Задайте поведение столкновения для маркера.
- Установить высоту маркера
- Регулировка видимости маркеров осуществляется с помощью уровня масштабирования карты.
Задайте поведение столкновения для маркера.
Параметр «Поведение при столкновении» определяет, как будет отображаться маркер, если он столкнется (перекроется) с другим маркером. Поддержка этого параметра доступна только на векторных картах.
Чтобы задать поведение при столкновении, установите для AdvancedMarkerElement.collisionBehavior одно из следующих значений:
-
REQUIRED: (по умолчанию) Всегда отображать маркер независимо от столкновения. -
OPTIONAL_AND_HIDES_LOWER_PRIORITYОтображать маркер только в том случае, если он не перекрывает другие маркеры. Если два маркера этого типа перекрываются, отображается тот, у которого более высокийzIndex. Если у них одинаковыйzIndex, отображается тот, у которого более низкое вертикальное положение на экране. -
REQUIRED_AND_HIDES_OPTIONALВсегда отображать маркер независимо от столкновения и скрывать любые маркеры или меткиOPTIONAL_AND_HIDES_LOWER_PRIORITY, которые могут перекрываться с маркером.
В следующем примере показано, как задать поведение при столкновении для маркера:
Машинопись
const advancedMarker = new AdvancedMarkerElement({ position: new google.maps.LatLng({ lat, lng }), collisionBehavior: collisionBehavior, }); mapElement.appendChild(advancedMarker);
JavaScript
const advancedMarker = new AdvancedMarkerElement({ position: new google.maps.LatLng({ lat, lng }), collisionBehavior: collisionBehavior, }); mapElement.appendChild(advancedMarker);
Установить высоту маркера
На векторных картах можно задать высоту, на которой отображается маркер. Это полезно для корректного отображения маркеров относительно содержимого 3D-карты. Чтобы задать высоту для маркера, укажите LatLngAltitude в качестве значения для параметра MarkerView.position :
Машинопись
const pin = new PinElement({ background: '#4b2e83', borderColor: '#b7a57a', glyphColor: '#b7a57a', scale: 2.0, }); const marker = new AdvancedMarkerElement({ // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20, } as google.maps.LatLngAltitudeLiteral, }); marker.append(pin); mapElement.append(marker);
JavaScript
const pin = new PinElement({ background: '#4b2e83', borderColor: '#b7a57a', glyphColor: '#b7a57a', scale: 2.0, }); const marker = new AdvancedMarkerElement({ // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20, }, }); marker.append(pin); mapElement.append(marker);
Регулировка видимости маркеров осуществляется с помощью уровня масштабирования карты.
Посмотрите, как меняется видимость маркеров (для начала уменьшите масштаб):
Для управления видимостью расширенного маркера создайте обработчик события zoom_changed и добавьте условную функцию, которая устанавливает значение AdvancedMarkerElement.map в null , если масштаб превышает указанный уровень, как показано в следующем примере:
Машинопись
mapElement.innerMap.addListener('zoom_changed', () => { let zoom = mapElement.innerMap.getZoom(); for (let i = 0; i < markers.length; i++) { const { position, minZoom } = markerOptions[i]; markers[i].position = zoom! > minZoom ? position : null; } });
JavaScript
mapElement.innerMap.addListener('zoom_changed', () => { let zoom = mapElement.innerMap.getZoom(); for (let i = 0; i < markers.length; i++) { const { position, minZoom } = markerOptions[i]; markers[i].position = zoom > minZoom ? position : null; } });
Следующие шаги
Сделайте маркеры кликабельными и доступными.