Mapbox GL AddLayer: d'où viennent les images d'icônes

10

De nombreux exemples chargent toujours l'image de l'icône comme ceci (par exemple ici: https://www.mapbox.com/mapbox-gl-js/example/geojson-markers/ ):

map.addLayer({
    "id": "markers",
    "type": "symbol",
    "source": "markers",
    "layout": {
        "icon-image": "{marker-symbol}-15",
        "text-field": "{title}",
        "text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
        "text-offset": [0, 0.6],
        "text-anchor": "top"
    }
});

Où cette icône est-elle stockée et comment puis-je créer un lien vers un png ou svg local? Ou comment puis-je mettre le mien markersen source? L'exemple n'est pas très bien documenté.

tobias47n9e
la source
Avez-vous vérifié la section «référence de style» des documents de l'API?
Tangnar
3
Ce n'est pas très bien expliqué à mon avis. J'adorerais voir un exemple de travail bien expliqué.
tobias47n9e

Réponses:

13

Si vous suivez les exemples, vous obtenez uniquement les sprites qui se chargent avec la feuille de sprite de votre style particulier, qui n'est PAS NÉCESSAIREMENT une correspondance 1 à 1 avec tout autre style.

ex: emerald-v8 n'a AUCUNE "icône-image": "port-15" comme l'exemple qui utilise les rues-v8.

Pour voir la liste des sprites disponibles à partir des styles correspondants: https://github.com/mapbox/mapbox-gl-styles/tree/master/sprites

Je peux choisir l'icône "port" dans leur dépôt emerald-v8 comme ceci:

map.addLayer({
    "id": "pointclick",
    type: 'symbol',
    source: 'pointclick',
    "layout": {
        "icon-image": "harbor_icon",
        "icon-size":1.5
    },
    "paint": {}
});

Voici la ressource qui m'a aidé à tout rassembler, et elle explique comment créer vos propres icônes: https://www.mapbox.com/help/custom-markers/#locate-mapbox-styles-images

ÉDITER:

Fondamentalement, pour ajouter une de vos propres icônes, allez dans Mapbox studio, créez votre propre style ou éditez l'une des leurs. Ajoutez simplement l'un de vos propres SVG, puis cette icône sera disponible pour vous dans votre feuille de sprite personnalisée.entrez la description de l'image ici

CCantey
la source
0

Comme il est dit dans les documents sprite : passez "sprite": "https://link"à votre style, où se linktrouve le lien vers json généré avec spritezero-cli . spritezero-cli a généré un sprite png à partir de la liste de vos icônes au format svg. Que vous pouvez utiliser des icônes dans les couches de symboles comme 'icon-image'.

microspace
la source