Aller au contenu principal

HTMLLinkElement

Ce document est une copie de l'ancienne page "Custom Rendering API", et est en cours de construction. Il décrira à terme l'API de l'élément personnalisé map-link ; l'"API de rendu personnalisé" provient actuellement de l'élément personnalisé map-link, ce qui pourrait changer à l'avenir.

L’interface de programmation d’applications (API) de rendu personnalisé permet aux développeurs de contourner la fonction de rendu de MapML et de dessiner ce qu’ils veulent sur la carte, à condition que cela fasse partie du domaine HTML.

Pavés personnalisés

Pour effectuer le rendu de pavés personnalisés avec JavaScript, écoutez l’événement tileloadstart sur un élément <map-link rel="tile"> d’une couche produite suivant un modèle.

Événement tileloadstart

Cet événement est déclenché à la création d’un pavé, et contient la structure suivante dans sa propriété des détails :

{
x: 1, // valeur x de tilematrix du pavé chargé
y: 2, // valeur y de tilematrix du pavé chargé
zoom: 3, // niveau de zoom du pavé chargé
appendTile: function appendTile ( customTile ) {...} // transmet le pavé personnalisé comme un argument de fonction
}

Exemple

La carte :

<mapml-viewer projection="OSMTILE" zoom="0" lat="45" lon="-75" controls>
<map-layer label="pavés personnalisés" checked>
<map-meta name="zoom" content="min=0,max=23" ></map-meta>
<map-extent units="OSMTILE" checked hidden>
<map-input name="zoomLevel" type="zoom" min="0" max="23" value="1" ></map-input>
<map-input name="row" type="location" axis="row" units="tilematrix" min="0" max="2" ></map-input>
<map-input name="col" type="location" axis="column" units="tilematrix" min="0" max="2" ></map-input>
<!-- écoutez l’événement tileloadstart sur cet élément -->
<map-link rel="tile" title="" tref="" ></map-link>
</map-extent>
</map-layer>
</mapml-viewer>

Script Java pour créer des pavés personnalisés :

let layer = document.querySelector("body > mapml-viewer > map-layer > map-extent > map-link");
layer.addEventListener("tileloadstart", (e) => {
let customTile = document.createElement("p");
customTile.innerHTML = `x: ${e.detail.x} y: ${e.detail.y} zoom: ${e.detail.zoom}`;
e.detail.appendTile(customTile);
});

Dans cet exemple, customTile est une balise HTML <p>, mais vous pouvez utiliser n’importe quel élément HTML. Il suffit d’ajouter l’élément créé avec la fonction (tileloadstart event).detail.appendTile(), ce qui transmet le pavé personnalisé en argument de la fonction.

Image personnalisée

important

À mettre en œuvre.

Spécifications

Spécification
HTMLLinkElement - pas encore (complètement) spécifié

Exigences

Signaler les problèmes liés à ces exigences sur GitHub

exigence amélioration peu pratique indécis en cours de discussion

Spéc.VisualiseurAPI
Propriétéss/os/os/o
Méthodess/os/os/o
Evénementsaucuns/opartiel *
Exceptions *
  1. L'élément <map-link> émettra l'événement tileloadstart, mais son comportement est expérimental et nécessite un balisage conforme à l'exemple donné ci-dessus.