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 kéo xong (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 Option + Space hoặc Option + Enter (máy Mac), Alt + Space 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 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 một điểm đánh dấu mà trình đọc màn hình có thể đọ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.