मार्कर को क्लिक करने और ऐक्सेस करने लायक बनाएं

क्लिक इवेंट मैनेज करने की सुविधा चालू करके, मार्कर को ज़्यादा ऐक्सेस करने लायक बनाया जा सकता है स्क्रीन रीडर के लिए जानकारी वाला टेक्स्ट और मार्कर स्केल को अडजस्ट करना.

  • जब किसी मार्कर पर क्लिक किया जा सकता है (या खींचने लायक) होता है, तो वह कीबोर्ड का जवाब दे सकता है और माउस इनपुट.
  • title विकल्प में दिए गए टेक्स्ट को स्क्रीन रीडर आसानी से पढ़ सकते हैं. जब कोई उपयोगकर्ता मार्कर के ऊपर माउस पॉइंटर रखता है, तब दिखाया जाता है.
  • मार्कर का साइज़ बढ़ाने से, इंटरैक्ट करने के लिए ज़रूरी सटीक जानकारी कम हो जाती है यह सभी डिवाइसों, ख़ास तौर पर टचस्क्रीन डिवाइसों पर काम करता है. साथ ही, सुलभता. डिफ़ॉल्ट मार्कर, डब्ल्यूसीएजी एए के कम से कम साइज़ की शर्तों को पूरा करते हों यह सिर्फ़ उन डेवलपर के लिए है जो डब्ल्यूसीएजी एएए के टारगेट साइज़ का पालन करना चाहते हैं मार्कर का मानक आकार बढ़ाना चाहिए.

मार्कर बदलने का तरीका जानने के लिए बुनियादी मार्कर कस्टमाइज़ेशन देखें चुनें, टाइटल का टेक्स्ट जोड़ें, और अन्य काम करें.

नीचे दिए गए उदाहरण में एक मैप दिखाया गया है. इसमें पांच क्लिक किए जा सकने वाले और फ़ोकस करने लायक मार्कर हैं. में टाइटल टेक्स्ट शामिल करें और इन्हें 1.5x स्केल पर सेट किया गया हो:

कीबोर्ड का इस्तेमाल करके मार्कर पर नेविगेट करने के लिए:

  1. पहले मार्कर पर फ़ोकस करने के लिए टैब कुंजी का उपयोग करें; अगर कई मार्कर का इस्तेमाल करने के लिए, तीर के निशान वाली कुंजियों का इस्तेमाल करें.
  2. अगर मार्कर क्लिक किया जा सकता है, तो "क्लिक करने" के लिए Enter बटन दबाएं. अगर किसी मार्कर में में जानकारी विंडो दिख रही है, तो उस पर क्लिक करके या Enter बटन को दबाकर उसे खोला जा सकता है या स्पेस बार. जब जानकारी विंडो बंद हो जाएगी, तब फ़ोकस वापस उससे जुड़े वीडियो पर होगा मार्कर.
  3. मैप के बाकी कंट्रोल पर जाने के लिए, Tab फिर से दबाएं.

मार्कर को क्लिक करने लायक बनाएं

इस सेक्शन में, क्लिक इवेंट के लिए मार्कर बनाने का तरीका बताया गया है. किसी मार्कर को क्लिक करने लायक बनाने के लिए:

  • gmpClickable प्रॉपर्टी को true पर सेट करें.

TypeScript

const marker = new AdvancedMarkerElement({
    position,
    map,
    title: `${i + 1}. ${title}`,
    content: pin.element,
    gmpClickable: true,
});

JavaScript

const marker = new AdvancedMarkerElement({
  position,
  map,
  title: `${i + 1}. ${title}`,
  content: pin.element,
  gmpClickable: true,
});

  • उपयोगकर्ता के इनपुट का जवाब देने के लिए, क्लिक इवेंट लिसनर जोड़ें.

TypeScript

// Add a click listener for each marker, and set up the info window.
marker.addListener('click', ({ domEvent, latLng }) => {
    const { target } = domEvent;
    infoWindow.close();
    infoWindow.setContent(marker.title);
    infoWindow.open(marker.map, marker);
});

JavaScript

// Add a click listener for each marker, and set up the info window.
marker.addListener("click", ({ domEvent, latLng }) => {
  const { target } = domEvent;

  infoWindow.close();
  infoWindow.setContent(marker.title);
  infoWindow.open(marker.map, marker);
});

  • किसी मार्कर पर फिर से क्लिक न किया जा सके, इसके लिए removeListener पर कॉल करके क्लिक हटाएं इवेंट लिसनर:

    // Remove the listener.
    google.maps.event.removeListener(clickListener);
    

सुलभता को और बेहतर बनाने के लिए:

  • AdvancedMarkerElement.title का इस्तेमाल करके मार्कर के लिए जानकारी देने वाला टेक्स्ट सेट करें का विकल्प शामिल है.
  • PinElement की scale प्रॉपर्टी का इस्तेमाल करके मार्कर स्केल को बढ़ाएं.

उदाहरण के तौर पर दिए गए कोड को पूरा करें

सोर्स कोड का पूरा उदाहरण देखें

TypeScript

async function initMap() {
    // Request needed libraries.
    const { Map, InfoWindow } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary;
    const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary;

    const map = new Map(document.getElementById("map") as HTMLElement, {
        zoom: 12,
        center: { lat: 34.84555, lng: -111.8035 },
        mapId: '4504f8b37365c3d0',
    });

    // Set LatLng and title text for the markers. The first marker (Boynton Pass)
    // receives the initial focus when tab is pressed. Use arrow keys to move
    // between markers; press tab again to cycle through the map controls.
    const tourStops = [
        {
            position: { lat: 34.8791806, lng: -111.8265049 }, 
            title: "Boynton Pass"
        },
        {
            position: { lat: 34.8559195, lng: -111.7988186 }, 
            title: "Airport Mesa"
        },
        {
            position: { lat: 34.832149, lng: -111.7695277 }, 
            title: "Chapel of the Holy Cross"
        },
        {
            position: { lat: 34.823736, lng: -111.8001857 }, 
            title: "Red Rock Crossing"
        },
        {
            position: { lat: 34.800326, lng: -111.7665047 }, 
            title: "Bell Rock"
        },
    ];

    // Create an info window to share between markers.
    const infoWindow = new InfoWindow();

    // Create the markers.
    tourStops.forEach(({position, title}, i) => {
        const pin = new PinElement({
            glyph: `${i + 1}`,
            scale: 1.5,
        });
        const marker = new AdvancedMarkerElement({
            position,
            map,
            title: `${i + 1}. ${title}`,
            content: pin.element,
            gmpClickable: true,
        });
        // Add a click listener for each marker, and set up the info window.
        marker.addListener('click', ({ domEvent, latLng }) => {
            const { target } = domEvent;
            infoWindow.close();
            infoWindow.setContent(marker.title);
            infoWindow.open(marker.map, marker);
        });
    });
}

initMap();

JavaScript

async function initMap() {
  // Request needed libraries.
  const { Map, InfoWindow } = await google.maps.importLibrary("maps");
  const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary(
    "marker",
  );
  const map = new Map(document.getElementById("map"), {
    zoom: 12,
    center: { lat: 34.84555, lng: -111.8035 },
    mapId: "4504f8b37365c3d0",
  });
  // Set LatLng and title text for the markers. The first marker (Boynton Pass)
  // receives the initial focus when tab is pressed. Use arrow keys to move
  // between markers; press tab again to cycle through the map controls.
  const tourStops = [
    {
      position: { lat: 34.8791806, lng: -111.8265049 },
      title: "Boynton Pass",
    },
    {
      position: { lat: 34.8559195, lng: -111.7988186 },
      title: "Airport Mesa",
    },
    {
      position: { lat: 34.832149, lng: -111.7695277 },
      title: "Chapel of the Holy Cross",
    },
    {
      position: { lat: 34.823736, lng: -111.8001857 },
      title: "Red Rock Crossing",
    },
    {
      position: { lat: 34.800326, lng: -111.7665047 },
      title: "Bell Rock",
    },
  ];
  // Create an info window to share between markers.
  const infoWindow = new InfoWindow();

  // Create the markers.
  tourStops.forEach(({ position, title }, i) => {
    const pin = new PinElement({
      glyph: `${i + 1}`,
      scale: 1.5,
    });
    const marker = new AdvancedMarkerElement({
      position,
      map,
      title: `${i + 1}. ${title}`,
      content: pin.element,
      gmpClickable: true,
    });

    // Add a click listener for each marker, and set up the info window.
    marker.addListener("click", ({ domEvent, latLng }) => {
      const { target } = domEvent;

      infoWindow.close();
      infoWindow.setContent(marker.title);
      infoWindow.open(marker.map, marker);
    });
  });
}

initMap();

सीएसएस

/* 
 * Always set the map height explicitly to define the size of the div element
 * that contains the map. 
 */
#map {
  height: 100%;
}

/* 
 * Optional: Makes the sample page fill the window. 
 */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

एचटीएमएल

<html>
  <head>
    <title>Advanced Marker Accessibility</title>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="map"></div>

    <!-- prettier-ignore -->
    <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
        ({key: "AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg", v: "beta"});</script>
  </body>
</html>

सैंपल आज़माएं