Làm cho các điểm đánh dấu có thể kéo

Khi bật tính năng kéo, người dùng có thể kéo điểm đánh dấu trên bản đồ bằng chuột hoặc phím mũi tên. Để tạo một điểm đánh dấu có thể kéo, hãy đặt thuộc tính AdvancedMarkerElement.gmpDraggable thành true.

Bản đồ ví dụ sau đây cho thấy một điểm đánh dấu có thể kéo, hiển thị vị trí cập nhật của điểm đánh dấu đó khi quá trình kéo kết thúc (sự kiện dragend được kích hoạt):

Cách kéo điểm đánh dấu bằng bàn phím:

  1. Nhấn phím tab cho đến khi các điểm đánh dấu được lấy tiêu điểm.
  2. Sử dụng phím mũi tên để di chuyển đến điểm đánh dấu mong muốn.
  3. Để kích hoạt thao tác kéo, hãy nhấn tổ hợp phím Option + Dấu cách hoặc Option + Enter (Mac), Alt + Dấu cách hoặc Alt + Enter (Windows).
  4. Dùng các phím mũi tên để di chuyển điểm đánh dấu.
  5. Để thả điểm đánh dấu tại vị trí mới, hãy nhấn phím Phím cách hoặc Enter. Thao tác này cũng sẽ tắt tính năng kéo.
  6. Để tắt tính năng kéo và đưa điểm đánh dấu về vị trí trước đó, hãy nhấn phím Esc.

Xem mã

TypeScript

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 map = new Map(document.getElementById('map') as HTMLElement, {
        center: {lat: 37.39094933041195, lng: -122.02503913145092},
        zoom: 14,
        mapId: '4504f8b37365c3d0',
    });

    const infoWindow = new InfoWindow();

    const draggableMarker = new AdvancedMarkerElement({
        map,
        position: {lat: 37.39094933041195, lng: -122.02503913145092},
        gmpDraggable: true,
        title: "This marker is draggable.",
    });
    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

async function initMap() {
  // Request needed libraries.
  const { Map, InfoWindow } = await google.maps.importLibrary("maps");
  const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
  const map = new Map(document.getElementById("map"), {
    center: { lat: 37.39094933041195, lng: -122.02503913145092 },
    zoom: 14,
    mapId: "4504f8b37365c3d0",
  });
  const infoWindow = new InfoWindow();
  const draggableMarker = new AdvancedMarkerElement({
    map,
    position: { lat: 37.39094933041195, lng: -122.02503913145092 },
    gmpDraggable: true,
    title: "This marker is draggable.",
  });

  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();

Đặt văn bản mô tả

Để đặt văn bản mô tả cho điểm đánh dấu mà trình đọc màn hình có thể đọc được, hãy sử dụng thuộc tính AdvancedMarkerElement.title, như minh hoạ dưới đây:

    const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: { lat: 37.4239163, lng: -122.0947209 },
        title: "Some descriptive text.",
    });

Khi bạn đặt thuộc tính title, trình đọc màn hình sẽ thấy văn bản và văn bản sẽ xuất hiện khi bạn di chuột qua điểm đánh dấu.