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 markers
en source? L'exemple n'est pas très bien documenté.
Réponses:
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:
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.
la source
Vous pouvez également utiliser des icônes externes / générées comme
icon-image
si vous utilisiezmap.loadImage()
et d'map.addImage()
abord.Exemples:
Ajouter une icône à la carte
Ajouter une icône générée à la carte
la source
Comme il est dit dans les documents sprite : passez
"sprite": "https://link"
à votre style, où selink
trouve 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'
.la source