Dodawanie mapy Google ze znacznikiem za pomocą JavaScriptu

Wprowadzenie

Z tego samouczka dowiesz się, jak dodać do strony internetowej mapę Google ze znacznikiem za pomocą kodu HTML, CSS i JavaScript. Dowiesz się też, jak ustawić opcje mapy i jak użyć funkcji control slotting, aby dodać do mapy etykietę.

Poniżej znajduje się mapa, którą utworzysz w ramach tego samouczka. Znacznik jest umieszczony w Uluru (znanym też jako Ayers Rock) w Parku Narodowym Uluru-Kata Tjuta.

Pierwsze kroki

Aby utworzyć na stronie internetowej mapę Google ze znacznikiem, wykonaj te 3 czynności:

  1. Uzyskaj klucz interfejsu API.
  2. Utwórz stronę HTML.
  3. Dodaj mapę ze znacznikiem.

Potrzebujesz przeglądarki. Wybierz znaną przeglądarkę, np. Google Chrome (zalecana), Firefox, Safari lub Edge, która jest obsługiwana na Twojej platformie z listy obsługiwanych przeglądarek.

Krok 1. Uzyskiwanie klucza interfejsu API

W tej sekcji dowiesz się, jak uwierzytelnić aplikację w interfejsie Maps JavaScript API za pomocą własnego klucza interfejsu API.

Aby uzyskać klucz interfejsu API, wykonaj te czynności:

  1. Otwórz konsolę Google Cloud.

  2. Utwórz lub wybierz projekt.

  3. Kliknij Dalej , aby włączyć interfejs API i powiązane usługi.

  4. Na stronie Dane logowania uzyskaj klucz interfejsu API (i ustaw ograniczenia klucza interfejsu API). Uwaga: jeśli masz już klucz interfejsu API bez ograniczeń lub klucz z ograniczeniami przeglądarki, możesz go użyć.

  5. Aby zapobiec kradzieży limitu i zabezpieczyć klucz interfejsu API, przeczytaj artykuł Korzystanie z kluczy interfejsu API.

  6. Włącz płatności. Więcej informacji znajdziesz w artykule Wykorzystanie i rozliczenia.

  7. Gdy uzyskasz klucz interfejsu API, dodaj go do tego fragmentu kodu, klikając „YOUR_API_KEY”. Skopiuj i wklej tag skryptu programu rozruchowego, aby użyć go na własnej stronie internetowej.

    <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: "YOUR_API_KEY",
        v: "weekly",
        // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
        // Add other bootstrap parameters as needed, using camel case.
      });
    </script>

Krok 2. Tworzenie strony HTML

Oto kod podstawowej strony internetowej HTML:

<!DOCTYPE html>
<!--
 @license
 Copyright 2025 Google LLC. All Rights Reserved.
 SPDX-License-Identifier: Apache-2.0
-->

<html>
  <head>
    <title>Add a Map</title>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
    <!-- 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: "YOUR_API_KEY", v: "weekly"});</script>
  </head>
  <body>

    <!-- The map, centered at Uluru, Australia. -->
    <gmp-map center="-25.344,131.031" zoom="4" map-id="DEMO_MAP_ID">
    </gmp-map>

  </body>
</html>

Jest to bardzo prosta strona HTML, która używa a gmp-map element do wyświetlania mapy na stronie. Mapa będzie pusta, ponieważ nie dodaliśmy jeszcze żadnego kodu JavaScript.

Zrozumienie kodu

Na tym etapie przykładu mamy:

  • Zadeklarowaliśmy aplikację jako HTML5 za pomocą deklaracji !DOCTYPE html.
  • Wczytaliśmy interfejs Maps JavaScript API za pomocą bootloadera.
  • Utworzyliśmy element gmp-map, który będzie zawierać mapę.

Deklarowanie aplikacji jako HTML5

Zalecamy zadeklarowanie prawdziwego DOCTYPE w aplikacji internetowej. W przykładach deklarujemy aplikacje jako HTML5 za pomocą kodu HTML5 DOCTYPE, jak pokazano poniżej:

<!DOCTYPE html>

Większość aktualnych przeglądarek będzie renderować treści zadeklarowane za pomocą tego DOCTYPE w „trybie standardów”, co oznacza, że aplikacja powinna być bardziej zgodna z różnymi przeglądarkami. DOCTYPE został też zaprojektowany tak, aby działać w trybie awaryjnym. Przeglądarki, które go nie rozumieją, zignorują go i użyją „trybu osobliwości”, aby wyświetlić treści.

Pamiętaj, że niektóre style CSS, które działają w trybie zgodności, nie są prawidłowe w trybie standardów. W szczególności wszystkie rozmiary oparte na procentach muszą dziedziczyć rozmiar z nadrzędnych elementów blokowych. Jeśli któryś z tych elementów nadrzędnych nie określi rozmiaru, przyjmuje się, że ma rozmiar 0 x 0 pikseli. Z tego powodu dodajemy tę deklarację style:

<style>
  gmp-map {
    height: 100%;
  }
  html, body {
    height: 100%;
    margin: 0;
    padding: 0;
  }
</style>

Wczytywanie interfejsu Maps JavaScript API

Narzędzie do wczytywania przygotowuje interfejs Maps JavaScript API do wczytania (żadne biblioteki nie są wczytywane, dopóki nie zostanie wywołana funkcja importLibrary() ).

<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: "YOUR_API_KEY",
    v: "weekly",
    // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
    // Add other bootstrap parameters as needed, using camel case.
  });
</script>

Instrukcje dotyczące uzyskiwania własnego klucza interfejsu API znajdziesz w sekcji Krok 3. Uzyskiwanie klucza interfejsu API.

Na tym etapie samouczka pojawi się puste okno, w którym będzie widoczny tylko tekst etykiety bez formatowania. Dzieje się tak, ponieważ nie dodaliśmy jeszcze żadnego kodu JavaScript.

Tworzenie elementu gmp-map

Aby mapa wyświetlała się na stronie internetowej, musimy zarezerwować dla niej miejsce. Zwykle robimy to, tworząc element gmp-map i uzyskując odniesienie do tego elementu w modelu DOM przeglądarki. Możesz też użyć elementu div do tego (więcej informacji), ale zalecamy używanie elementu gmp-map.

Poniższy kod definiuje element gmp-map i ustawia parametry center, zoom i map-id.

<gmp-map center="-25.344,131.031" zoom="4" map-id="DEMO_MAP_ID">
</gmp-map>

Opcje center i zoom są zawsze wymagane. W powyższym kodzie właściwość center informuje interfejs API, gdzie ma wyśrodkować mapę, a właściwość zoom określa poziom powiększenia mapy. Powiększenie: 0 to najmniejsze powiększenie, które wyświetla całą Ziemię. Aby powiększyć Ziemię w wyższej rozdzielczości, ustaw wyższą wartość powiększenia.

Poziomy powiększenia

Wyświetlanie mapy całej Ziemi jako jednego obrazu wymagałoby ogromnej mapy lub małej mapy o bardzo niskiej rozdzielczości. Dlatego obrazy map w Mapach Google i interfejsie Maps JavaScript API są podzielone na „kafelki” i „poziomy powiększenia”. Na niskich poziomach powiększenia mały zestaw kafelków mapy obejmuje duży obszar. Na wyższych poziomach powiększenia kafelki mają wyższą rozdzielczość i obejmują mniejszy obszar. Poniższa lista pokazuje przybliżony poziom szczegółowości na poszczególnych poziomach powiększenia:

  • 1: Świat
  • 5: Ląd lub kontynent
  • 10: Miasto
  • 15: Ulice
  • 20: Budynki

Te 3 obrazy przedstawiają tę samą lokalizację w Tokio na poziomach powiększenia 0, 7 i 18.

Poniższy kod opisuje CSS, który ustawia rozmiar elementu gmp-map.

/* Set the size of the gmp-map element that contains the map */
gmp-map {
    height: 400px; /* The height is 400 pixels */
    width: 100%; /* The width is the width of the web page */
}

W powyższym kodzie element style ustawia rozmiar elementu gmp-map. Aby mapa była widoczna, ustaw szerokość i wysokość na wartość większą niż 0 pikseli. W tym przypadku element gmp-map ma wysokość 400 pikseli i szerokość 100%, dzięki czemu wyświetla się na całej szerokości strony internetowej. Zalecamy, aby zawsze jawnie ustawiać style wysokości i szerokości.

Control slotting

Za pomocą funkcji control slotting możesz dodawać do mapy elementy sterujące formularza HTML. A slot to predefiniowane miejsce na mapie. Użyj atrybutu slot, aby ustawić potrzebne położenie elementu, i zagnieźdź elementy w elemencie gmp-map. Poniższy fragment kodu pokazuje, jak dodać etykietę HTML w lewym górnym rogu mapy.