Utilizza gli indicatori per visualizzare singole località su una mappa. Questa pagina mostra come aggiungere un indicatore a una mappa in modo programmatico e utilizzando elementi HTML personalizzati.
- Aggiungere un indicatore utilizzando elementi HTML personalizzati
- Aggiungere un indicatore in modo programmatico
Caricare la libreria degli indicatori avanzati
Per aggiungere un indicatore avanzato a una mappa, il codice della mappa deve caricare la libreria
marker
, che fornisce le classi AdvancedMarkerElement
e PinElement
. Ciò vale sia se la tua app carica i marcatori in modo programmatico
sia se utilizza HTML. A tale scopo, la tua app deve prima
caricare l'API Maps JavaScript.
Il metodo che utilizzi per caricare le librerie dipende da come la pagina web carica l'API Maps JavaScript.
Se la tua pagina web utilizza il caricamento dinamico degli script, aggiungi la libreria dei marcatori e importa
AdvancedMarkerElement
(e facoltativamentePinElement
) in fase di runtime, come mostrato qui.const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
Se la tua pagina web utilizza il tag di caricamento diretto dello script, aggiungi
libraries=marker
allo script di caricamento, come mostrato nello snippet seguente. In questo modo verranno importati siaAdvancedMarkerElement
chePinElement
.<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap&v=weekly&libraries=marker" defer ></script>
Aggiungere un indicatore utilizzando elementi HTML personalizzati
Per aggiungere un indicatore avanzato utilizzando elementi HTML personalizzati, aggiungi un elemento secondario gmp-advanced-marker
all'elemento gmp-map
. Il seguente
snippet mostra l'aggiunta di indicatori a una pagina web:
<gmp-map center="43.4142989,-124.2301242" zoom="4" map-id="DEMO_MAP_ID" style="height: 400px" > <gmp-advanced-marker position="37.4220656,-122.0840897" title="Mountain View, CA" ></gmp-advanced-marker> <gmp-advanced-marker position="47.648994,-122.3503845" title="Seattle, WA" ></gmp-advanced-marker> </gmp-map>
Visualizza il codice sorgente dell'esempio completo
Questo esempio mostra la creazione di una mappa con indicatori utilizzando HTML.
TypeScript
// This example adds a map with markers, using web components. async function initMap(): Promise<void> { console.log('Maps JavaScript API loaded.'); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example adds a map with markers, using web components. async function initMap() { console.log("Maps JavaScript API loaded."); } window.initMap = initMap;
CSS
/* * 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; } gmp-map { height: 400px; }
HTML
<html> <head> <title>Add a Map with Markers using HTML</title> <link rel="stylesheet" type="text/css" href="./style.css" /> <script type="module" src="./index.js"></script> </head> <body> <gmp-map center="43.4142989,-124.2301242" zoom="4" map-id="DEMO_MAP_ID" style="height: 400px" > <gmp-advanced-marker position="37.4220656,-122.0840897" title="Mountain View, CA" ></gmp-advanced-marker> <gmp-advanced-marker position="47.648994,-122.3503845" title="Seattle, WA" ></gmp-advanced-marker> </gmp-map> <!-- The `defer` attribute causes the script to execute after the full HTML document has been parsed. For non-blocking uses, avoiding race conditions, and consistent behavior across browsers, consider loading using Promises. See https://developers.google.com/maps/documentation/javascript/load-maps-js-api for more information. --> <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&libraries=maps,marker&v=beta" defer ></script> </body> </html>
Prova campione
Aggiungere un indicatore in modo programmatico
Per aggiungere un indicatore avanzato a una mappa in modo programmatico, crea un nuovo
AdvancedMarkerElement
, passando un LatLng
o un LatLngAltitude
e un
riferimento alla basemap, come mostrato in questo esempio:
const marker = new AdvancedMarkerElement({
map,
position: { lat: 37.4239163, lng: -122.0947209 },
});
Per rimuovere un indicatore dalla mappa, imposta markerView.map
o position
su
null
.
Visualizza il codice sorgente dell'esempio completo
Questo esempio mostra come aggiungere un indicatore a una mappa.
TypeScript
async function initMap() { // Request needed libraries. const { Map } = 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.4239163, lng: -122.0947209 }, zoom: 14, mapId: '4504f8b37365c3d0', }); const marker = new AdvancedMarkerElement({ map, position: { lat: 37.4239163, lng: -122.0947209 }, }); } initMap();
JavaScript
async function initMap() { // Request needed libraries. const { Map } = await google.maps.importLibrary("maps"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); const map = new Map(document.getElementById('map'), { center: { lat: 37.4239163, lng: -122.0947209 }, zoom: 14, mapId: '4504f8b37365c3d0', }); const marker = new AdvancedMarkerElement({ map, position: { lat: 37.4239163, lng: -122.0947209 }, }); } initMap();
CSS
/* * 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
<html> <head> <title>Default Advanced Marker</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: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8", v: "weekly"});</script> </body> </html>