جعل العلامات قابلة للسحب

عند تفعيل إمكانية السحب، يمكن للمستخدمين سحب العلامات على الخريطة باستخدام الماوس أو مفاتيح الأسهم. لجعل العلامة قابلة للسحب، اضبط السمة AdvancedMarkerElement.gmpDraggable على true.

يعرض مثال الخريطة التالي علامة قابلة للسحب تعرِض موقعها المعدَّل عند الانتهاء من السحب (يتم تشغيل الحدث dragend):

إليك الخطوات التي يجب اتّباعها لسحب علامة باستخدام لوحة المفاتيح:

  1. اضغط على مفتاح التبويب (Tab) إلى أن يتم التركيز على العلامات.
  2. استخدِم مفتاح الأسهم للانتقال إلى العلامة المطلوبة.
  3. لتفعيل عملية السحب، اضغط على Option + مفتاح المسافة أو Option + Enter (في نظام التشغيل Mac) أو Alt + مفتاح المسافة أو Alt + Enter (في نظام التشغيل Windows).
  4. استخدِم مفاتيح الأسهم لنقل العلامة.
  5. لإسقاط العلامة في موقعها الجديد، اضغط على مفتاح المسافة أو مفتاح Enter. سيؤدي ذلك أيضًا إلى إيقاف السحب.
  6. لإيقاف السحب وإعادة العلامة إلى موضعها السابق، اضغط على Esc.

الاطّلاع على الرمز

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

ضبط نص وصفي

لضبط نص وصفي لمؤشر يمكن قراءته بواسطة برامج قراءة الشاشة، استخدِم سمة AdvancedMarkerElement.title، كما هو موضّح هنا:

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

عند ضبط السمة title، يكون النص مرئيًا لبرامج قراءة الشاشة، و سيظهر عند تمرير الماوس فوق العلامة.