Если включена возможность перетаскивания, пользователи могут перетаскивать маркеры на карте с помощью мыши или клавиш со стрелками. Чтобы сделать маркер перетаскиваемым, установите свойство AdvancedMarkerElement.gmpDraggable в true .
На следующем примере карты показан перетаскиваемый маркер, который отображает свое обновленное положение после завершения перетаскивания (срабатывает событие dragend ):
Чтобы перетащить маркер с помощью клавиатуры:
- Нажимайте клавишу Tab, пока маркеры не станут фокусом.
- Используйте клавишу со стрелкой для перехода к нужному маркеру.
- Чтобы активировать перетаскивание, нажмите Option + Пробел или Option + Enter (Mac), Alt + Пробел или Alt + Enter (Windows).
- Для перемещения маркера используйте клавиши со стрелками.
- Чтобы переместить маркер в новое место, нажмите клавишу «Пробел» или «Ввод» . Это также отключит перетаскивание.
- Чтобы отключить перетаскивание и вернуть маркер в предыдущую позицию, нажмите клавишу Esc .
Посмотреть код
Машинопись
const mapElement = document.querySelector('gmp-map') as google.maps.MapElement; async function initMap() { // Request needed libraries. const { Map, InfoWindow } = (await google.maps.importLibrary( 'maps' )) as google.maps.MapsLibrary; const { AdvancedMarkerElement } = (await google.maps.importLibrary( 'marker' )) as google.maps.MarkerLibrary; const infoWindow = new InfoWindow(); const draggableMarker = new AdvancedMarkerElement({ position: { lat: 37.39094933041195, lng: -122.02503913145092 }, gmpDraggable: true, title: 'This marker is draggable.', }); mapElement.append(draggableMarker); draggableMarker.addListener('dragend', (event) => { const position = draggableMarker.position as google.maps.LatLng; infoWindow.close(); infoWindow.setContent( `Pin dropped at: ${position.lat}, ${position.lng}` ); infoWindow.open(draggableMarker.map, draggableMarker); }); } initMap();
JavaScript
const mapElement = document.querySelector('gmp-map'); async function initMap() { // Request needed libraries. const { Map, InfoWindow } = (await google.maps.importLibrary('maps')); const { AdvancedMarkerElement } = (await google.maps.importLibrary('marker')); const infoWindow = new InfoWindow(); const draggableMarker = new AdvancedMarkerElement({ position: { lat: 37.39094933041195, lng: -122.02503913145092 }, gmpDraggable: true, title: 'This marker is draggable.', }); mapElement.append(draggableMarker); draggableMarker.addListener('dragend', (event) => { const position = draggableMarker.position; infoWindow.close(); infoWindow.setContent(`Pin dropped at: ${position.lat}, ${position.lng}`); infoWindow.open(draggableMarker.map, draggableMarker); }); } initMap();
Установить описательный текст
Чтобы задать описательный текст для маркера, который смогут прочитать программы чтения с экрана, используйте атрибут AdvancedMarkerElement.title , как показано здесь:
const markerView = new google.maps.marker.AdvancedMarkerElement({
map,
position: { lat: 37.4239163, lng: -122.0947209 },
title: "Some descriptive text.",
});
Если атрибут title установлен, текст виден программам чтения с экрана и будет появляться при наведении указателя мыши на маркер.