Na tej stronie dowiesz się, jak kontrolować te aspekty zaawansowanych znaczników:
- Ustawianie zachowania znaczników przy kolizji
- Ustawianie wysokości znacznika
- Sterowanie widocznością znacznika na podstawie poziomu powiększenia mapy
Ustawianie zachowania znaczników przy kolizji
Zachowanie znaczników przy kolizji określa, jak znacznik będzie wyświetlany, jeśli będzie się nakładać na inny znacznik. Zachowanie przy kolizji jest obsługiwane tylko na mapach wektorowych.
Aby ustawić zachowanie przy kolizji, ustaw w atrybucie AdvancedMarkerElement.collisionBehavior jedną z tych wartości:
REQUIRED(domyślnie) Zawsze wyświetlaj znacznik niezależnie od kolizji.OPTIONAL_AND_HIDES_LOWER_PRIORITYWyświetlaj znacznik tylko wtedy, gdy nie nakłada się na inne znaczniki. Jeśli 2 znaczniki tego typu nakładają się na siebie, wyświetlany jest ten z wyższą wartościązIndex. Jeśli mają ten sam atrybutzIndex, wyświetlany jest ten znacznik, który znajduje się niżej na ekranie.REQUIRED_AND_HIDES_OPTIONALZawsze wyświetlaj znacznik niezależnie od kolizji i ukrywaj wszystkie znacznikiOPTIONAL_AND_HIDES_LOWER_PRIORITYlub etykiety, które mogłyby się z nim pokrywać.
W przykładzie poniżej pokazujemy, jak ustawić zachowanie znacznika przy kolizji:
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);
Ustawianie wysokości znacznika
Na mapach wektorowych możesz ustawić wysokość, na której ma się pojawiać znacznik. Jest to przydatne, aby znaczniki wyświetlały się prawidłowo w stosunku do treści mapy 3D. Aby ustawić wysokość znacznika, określ wartość LatLngAltitude dla opcji 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);
Sterowanie widocznością znacznika na podstawie poziomu powiększenia mapy
Zobacz, jak zmienia się widoczność znaczników (zacznij od oddalenia):
Jeśli chcesz kontrolować widoczność znacznika zaawansowanego, utwórz detektor zoom_changed i dodaj funkcję warunkową, aby ustawić AdvancedMarkerElement.map na null, jeśli poziom powiększenia przekroczy określony poziom. Możesz to zobaczyć w tym przykładzie:
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; } });
Dalsze kroki
Umożliwianie klikania i dostępność znaczników