Share via


Koordináta információinak lekérése

Ez a cikk bemutatja, hogyan végezhet fordított címkeresést, amely egy kiválasztott előugró hely címét jeleníti meg.

Kétféleképpen végezhet fordított címkeresést. Ennek egyik módja a Reverse Address Search API lekérdezése a TypeScript REST SDK @azure-rest/maps-search használatával. A másik módszer az, hogy a Fetch API használatával kérést intéz a Reverse Address Search API-hoz egy cím megkereséséhez. Mindkét módszert ebben a cikkben ismertetjük.

Fordított keresési kérés kérése REST SDK-val

import * as atlas from "azure-maps-control";
import MapsSearch from "@azure-rest/maps-search";
import "azure-maps-control/dist/atlas.min.css";

const onload = () => {
  // Initialize a map instance.
  const map = new atlas.Map("map", {
    view: "Auto",
    // Add authentication details for connecting to Azure Maps.
    authOptions: {
      // Use Azure Active Directory authentication.
      authType: "aad",
      clientId: "<Your Azure Maps Client Id>",
      aadAppId: "<Your Azure Active Directory Client Id>",
      aadTenant: "<Your Azure Active Directory Tenant Id>"
    }
  });

  map.events.add("load", async () => {
    // Use the access token from the map and create an object that implements the TokenCredential interface.
    const credential = {
      getToken: () => {
        return {
          token: map.authentication.getToken()
        };
      }
    };

    // Create a Search client.
    const client = MapsSearch(credential, "<Your Azure Maps Client Id>");

    // Update the style of mouse cursor to a pointer
    map.getCanvasContainer().style.cursor = "pointer";

    // Create a popup
    const popup = new atlas.Popup();

    // Upon a mouse click, open a popup at the selected location and render in the popup the address of the selected location
    map.events.add("click", async (e) => {
      const position = [e.position[1], e.position[0]];

      // Execute the reverse address search query and open a popup once a response is received
      const response = await client.path("/search/address/reverse/{format}", "json").get({
        queryParameters: { query: position }
      });

      // Get address data from response
      const data = response.body.addresses;

      // Construct the popup
      var popupContent = document.createElement("div");
      popupContent.classList.add("popup-content");
      popupContent.innerHTML = data.length !== 0 ? data[0].address.freeformAddress : "No address for that location!";
      popup.setOptions({
        position: e.position,
        content: popupContent
      });

      // Render the popup on the map
      popup.open(map);
    });
  });
};

document.body.onload = onload;

Az előző kód példában az első blokk létrehoz egy térképobjektumot, és beállítja a hitelesítési mechanizmust a Microsoft Entra ID használatára. További információ: Térkép létrehozása.

A második kódblokk létrehoz egy objektumot, amely implementálja a TokenCredential felületet a HTTP-kérések Azure-Térképek való hitelesítéséhez a hozzáférési jogkivonattal. Ezután átadja a hitelesítő objektumot a Térképek Searchnek, és létrehozza az ügyfél egy példányát.

A harmadik kódblokk frissíti az egérmutató stílusát egy mutatóra, és létrehoz egy előugró objektumot. További információ: Előugró ablak hozzáadása a térképen.

A negyedik kódblokk egy kattintásos eseményfigyelőt ad hozzá. Aktiváláskor létrehoz egy keresési lekérdezést a kijelölt pont koordinátáival. Ezután GET kérést küld a koordináták címének lekérdezésére a Keresési cím fordított API-jának lekérésére.

Az ötödik kódblokk beállítja a HTML előugró tartalmát a kiválasztott koordináta-pozíció válaszcímének megjelenítéséhez.

A kurzor, az előugró objektum és az click esemény mind létrejön a térkép terhelésesemény-figyelőjében. Ez a kódstruktúra biztosítja a térkép teljes betöltését a koordináták adatainak lekérése előtt.

Fordított keresési kérés kérése a Fetch API-val

Válasszon ki egy helyet a térképen, hogy visszafelé irányuló geokód kérést küldjön az adott helyhez a beolvasás használatával.

import * as atlas from "azure-maps-control";
import "azure-maps-control/dist/atlas.min.css";

const onload = () => {
  // Initialize a map instance.
  const map = new atlas.Map("map", {
    view: "Auto",
    // Add authentication details for connecting to Azure Maps.
    authOptions: {
      // Use Azure Active Directory authentication.
      authType: "aad",
      clientId: "<Your Azure Maps Client Id>",
      aadAppId: "<Your Azure Active Directory Client Id>",
      aadTenant: "<Your Azure Active Directory Tenant Id>"
    }
  });

  map.events.add("load", async () => {
    // Update the style of mouse cursor to a pointer
    map.getCanvasContainer().style.cursor = "pointer";

    // Create a popup
    const popup = new atlas.Popup();

    // Upon a mouse click, open a popup at the selected location and render in the popup the address of the selected location
    map.events.add("click", async (e) => {
      //Send a request to Azure Maps reverse address search API
      let url = "https://atlas.microsoft.com/search/address/reverse/json?";
      url += "&api-version=1.0";
      url += "&query=" + e.position[1] + "," + e.position[0];

      // Process request
      fetch(url, {
        headers: {
          Authorization: "Bearer " + map.authentication.getToken(),
          "x-ms-client-id": "<Your Azure Maps Client Id>"
        }
      })
        .then((response) => response.json())
        .then((response) => {
          const popupContent = document.createElement("div");
          popupContent.classList.add("popup-content");
          const address = response["addresses"];
          popupContent.innerHTML =
            address.length !== 0 ? address[0]["address"]["freeformAddress"] : "No address for that location!";
          popup.setOptions({
            position: e.position,
            content: popupContent
          });
          // render the popup on the map
          popup.open(map);
        });
    });
  });
};

document.body.onload = onload;

Az előző kód példában az első kódblokk létrehoz egy térképobjektumot, és beállítja a hitelesítési mechanizmust a Microsoft Entra ID használatára. Útmutatásért tekintse meg a Térkép létrehozása című témakört.

A második kódblokk az egérmutató stílusát egy mutatóra frissíti. Létrehoz egy előugró objektumot. További információ: Előugró ablak hozzáadása a térképen.

A kód harmadik blokkja egy eseményfigyelőt ad hozzá az egérkattintásokhoz. Az egérkattintáskor a Fetch API használatával kérdezi le az Azure Térképek Fordított címkeresés API-t a kiválasztott koordináták címéhez. A sikeres válasz érdekében összegyűjti a kiválasztott hely címét. Az előugró tartalmat és a pozíciót az előugró osztály setOptions függvényével határozza meg.

A kurzor, az előugró objektum és az click esemény mind létrejön a térkép terhelésesemény-figyelőjében. Ez a kódstruktúra biztosítja a térkép teljes betöltését a koordináták adatainak lekérése előtt.

Az alábbi képen egy képernyőkép látható a két kódminta eredményeiről.

A screenshot of a map showing reverse address search results in a popup.

További lépések

További információ a cikkben használt osztályokról és módszerekről:

A teljes kódra vonatkozó példákért tekintse meg az alábbi cikkeket: