Nesta página, mostramos como controlar os seguintes aspectos dos Marcadores Avançados:
- Definir o comportamento em caso de conflito de um marcador
- Definir a altitude do marcador
- Controlar a visibilidade do marcador por nível de zoom do mapa
Definir o comportamento em caso de conflito de um marcador
O comportamento em caso de conflito controla como um marcador vai aparecer se houver sobreposição com outro marcador. Isso só é compatível com mapas vetoriais.
Para escolher o comportamento em caso de conflito, defina AdvancedMarkerElement.collisionBehavior como uma das seguintes opções:
REQUIRED(padrão): sempre mostrar o marcador, independentemente do conflito.OPTIONAL_AND_HIDES_LOWER_PRIORITY: só mostrar o marcador se ele não se sobrepuser a outros elementos. Em caso de conflito, o marcador com o maiorzIndexvai aparecer. Se eles tiverem o mesmozIndex, aquele com a posição vertical mais abaixo na tela será mostrado.REQUIRED_AND_HIDES_OPTIONAL: sempre mostrar o marcador, independentemente do conflito, e ocultar todos os marcadoresOPTIONAL_AND_HIDES_LOWER_PRIORITYou rótulos que se sobrepuserem a eles.
Veja no exemplo a seguir como configurar o comportamento em caso de conflito de um marcador:
TypeScript
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);
Definir a altitude do marcador
Em mapas vetoriais, você pode definir a altitude em que um marcador aparece. Isso é útil para ajustar a posição dos marcadores em relação ao conteúdo do mapa 3D. Para definir a altitude de um marcador, especifique um LatLngAltitude como valor para a opção MarkerView.position:
TypeScript
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);
Controlar a visibilidade do marcador por nível de zoom do mapa
Verifique a mudança na visibilidade dos marcadores, começando por diminuir o zoom:
Para controlar a visibilidade de um marcador avançado, crie um listener zoom_changed e adicione uma função condicional que defina AdvancedMarkerElement.map como null se o zoom exceder o nível especificado, conforme mostrado no exemplo a seguir:
TypeScript
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; } });
Próximas etapas
Tornar os marcadores clicáveis e acessíveis