Condividi tramite


Aggiungere indicatori HTML alla mappa

Questo articolo illustra come aggiungere un codice HTML personalizzato, ad esempio un file di immagine, alla mappa come indicatore HTML.

Nota

Gli indicatore HTML non si connettono alle origini dati. Le informazioni sulla posizione sono invece aggiunte direttamente all'indicatore, il quale viene aggiunto alla proprietà markers delle mappe, un HtmlMarkerManager.

Importante

A differenza della maggior parte dei livelli nel controllo Web di Mappe di Azure, dove per il rendering viene sfruttato WebGL, gli indicatori HTML usano elementi DOM tradizionali. Di conseguenza, più si aggiungono indicatori HTML a una pagina, più saranno disponibili elementi DOM. Le prestazioni possono calare dopo aver aggiunto alcune centinaia di indicatori HTML. Per set di dati più grandi, prendere in considerazione il clustering dei dati o l'uso di un livello per i simboli o per le bolle.

Aggiungere un indicatore HTML

La classe HtmlMarker ha uno stile predefinito. È possibile personalizzare l'indicatore configurandone le impostazioni di colore e testo. Lo stile predefinito della classe HtmlMarker è un modello SVG con un segnaposto {color} e {text}. Configurare le proprietà di colore e testo nelle opzioni dell'indicatore HTML per una rapida personalizzazione.

Il codice seguente crea un indicatore HTML e imposta la proprietà del colore su DodgerBlue e la proprietà del testo su 10. All'indicatore viene associato un popup e, per attivare la visibilità del popup, viene usato l'evento click.

//Create an HTML marker and add it to the map.
var marker = new atlas.HtmlMarker({
    color: 'DodgerBlue',
    text: '10',
    position: [0, 0],
    popup: new atlas.Popup({
        content: '<div style="padding:10px">Hello World</div>',
        pixelOffset: [0, -30]
    })
});

map.markers.add(marker);

//Add a click event to toggle the popup.
map.events.add('click',marker, () => {
    marker.togglePopup();
});

Per un esempio funzionante completo di come aggiungere un marcatore HTML, vedere Semplice marcatore HTML negli esempi di Mappe di Azure. Per il codice sorgente per questo esempio, vedere Codice sorgente del marcatore HTML semplice.

Screenshot che mostra una mappa del mondo con un HtmlMarker semplice.

Creare un indicatore HTML basato su modello SVG

Il valore predefinito htmlContent di un indicatore Html è un modello di SVG che include i segnaposto {color} e {text}. È possibile creare stringhe SVG personalizzate e aggiungere questi segnaposto in SVG, in modo che l'impostazione delle opzioni color e text dell'indicatore aggiorni tali segnaposto in SVG.

Per un esempio completo di come creare un modello SVG personalizzato e usarlo con la classe HtmlMarker, vedere Marcatori HTML con modello SVG personalizzato negli esempi di Mappe di Azure. Quando si esegue questo esempio, selezionare il pulsante nel lato superiore sinistro della finestra con etichetta Opzioni indicatore di aggiornamento per modificare le opzioni color e text dal modello SVG usato in HtmlMarker. Per il codice sorgente per questo esempio, vedere Marcatore HTML con codice sorgente del modello SVG personalizzato.

Screenshot che mostra una mappa del mondo con un modello SVG personalizzato usato con la classe HtmlMarker. Include un pulsante etichettato opzioni di aggiornamento marcatore, che quando selezionato modifica il colore e le opzioni di testo dal modello SVG usato in HtmlMarker.

Suggerimento

Azure Maps Web SDK offre vari modelli di immagini SVG che possono essere usati con indicatori HTML. Per altre informazioni, vedere il documento Come usare i modelli di immagine.

Aggiungere un indicatore HTML in stile CSS

Uno dei vantaggi degli indicatori HTML è la presenza di diverse eccezionali personalizzazioni che si possono ottenere sfruttando lo stile CSS. Nell'esempio seguente, il contenuto di HtmlMarker è costituito da HTML e CSS che creano un indicatore animato che cade sulla posizione ed emette un'onda.

//Wait until the map resources are ready.
map.events.add('ready', function () {
    //Create a HTML marker and add it to the map.
    map.markers.add(new atlas.HtmlMarker({
        htmlContent: "<div><div class='pin bounce'></div><div class='pulse'></div></div>",
        position: [-0.1406, 51.5018],
        pixelOffset: [5, -18]
    }));
});

Il CSS:

    <style>
        .pin {
            width: 30px;
            height: 30px;
            border-radius: 50% 50% 50% 0;
            background: #00cae9;
            position: absolute;
            transform: rotate(-45deg);
            left: 50%;
            top: 50%;
            margin: -20px 0 0 -20px;
        }

            .pin:after {
                content: "";
                width: 14px;
                height: 14px;
                margin: 8px 0 0 8px;
                background: #e6e6e6;
                position: absolute;
                border-radius: 50%;
            }

        .bounce {
            animation-name: bounce;
            animation-fill-mode: both;
            animation-duration: 1s;
        }

        .pulse {
            background: #d6d4d4;
            border-radius: 50%;
            height: 14px;
            width: 14px;
            position: absolute;
            left: 50%;
            top: 50%;
            margin: 11px 0px 0px -12px;
            transform: rotateX(55deg);
            z-index: -2;
        }

            .pulse:after {
                content: "";
                border-radius: 50%;
                height: 40px;
                width: 40px;
                position: absolute;
                margin: -13px 0 0 -13px;
                animation: pulsate 1s ease-out;
                animation-iteration-count: infinite;
                opacity: 0;
                box-shadow: 0 0 1px 2px #00cae9;
                animation-delay: 1.1s;
            }

        @keyframes pulsate {
            0% {
                transform: scale(0.1, 0.1);
                opacity: 0;
            }

            50% {
                opacity: 1;
            }

            100% {
                transform: scale(1.2, 1.2);
                opacity: 0;
            }
        }

        @keyframes bounce {
            0% {
                opacity: 0;
                transform: translateY(-2000px) rotate(-45deg);
            }

            60% {
                opacity: 1;
                transform: translateY(30px) rotate(-45deg);
            }

            80% {
                transform: translateY(-10px) rotate(-45deg);
            }

            100% {
                transform: translateY(0) rotate(-45deg);
            }
        }
    </style>

Per un esempio completo di come usare CSS e HTML per creare un marcatore sulla mappa, vedere Marcatore HTML in stile CSS negli esempi di Mappe di Azure. Per il codice sorgente per questo esempio, vedere Codice sorgente dell'indicatore HTML in stile CSS.

Screenshot che mostra un marcatore HTML in stile CSS.

Indicatori HTML trascinabili

Questo esempio mostra come rendere trascinabile un indicatore HTML. Gli indicatori HTML supportano gli eventi drag, dragstart e dragend.

Per un esempio completo di come usare CSS e HTML per creare un marcatore sulla mappa, vedere Marcatori HTML trascinabili negli esempi di Mappe di Azure. Per il codice sorgente per questo esempio, vedere Codice sorgente del marcatore HTML trascinabile.

Screenshot che mostra una mappa degli Stati Uniti con un tacco del pollice giallo trascinato per dimostrare un marcatore HTML trascinabile.

Aggiungere eventi del mouse a indicatori HTML

Per un esempio funzionante completo di come aggiungere eventi del mouse e trascinare eventi a un marcatore HTML, vedere Eventi del marcatore HTML negli esempi di Mappe di Azure. Per il codice sorgente per questo campione, vedere il codice sorgente degli eventi HTML.

Screenshot che mostra una mappa del mondo con HtmlMarker e un elenco di eventi HtmlMarker che vengono evidenziati in verde quando viene generato l'evento.

Passaggi successivi

Per altre informazioni sulle classi e sui metodi usati in questo articolo, vedere:

Per altri esempi di codice da aggiungere alle mappe, vedere gli articoli seguenti: