Suite

La couche CartoDB ne s'affiche pas sur la couche mapbox mais la légende est

La couche CartoDB ne s'affiche pas sur la couche mapbox mais la légende est


Actuellement, la légende s'affiche uniquement mais pas la couche.

REMARQUE : j'essaie d'exécuter la carte Web sur un modal d'amorçage, vous verrez donc :$('#webmap-modal').on('shown.bs.modal', function()dans le code que je poste.

Ceci étant dit, voici le code :

carte var; $('#webmap-modal').on('shown.bs.modal', function() { L.mapbox.accessToken = 'pk.eyJ1IjoiaXRzbXNkIiwiYSI6ImNpaGU1cGRycDBqb290dGx6aGFkcDd4ODMifQ.21JHrd2HAFyrCrCrmap' 'mapbox.light', { minZoom: 3 }).setView([60.751723, -105.907315], 3); L.control.scale().addTo(map); L.tileLayer(", { attribution: 'Créé par Kam', }).addTo(map); var cdb_layer = cartodb.createLayer(map, 'https://itsmsd.cartodb.com/api/v2/viz/00873ec2-94ab-11e5-8e1b-0e3ff518bd15/viz.json') .addTo(map); L.control.layers({ 'Grey Canvas': L.mapbox.tileLayer('mapbox.light').addTo(map), 'Street Canvas': L.mapbox.tileLayer('mapbox.streets'), 'Emerald Canvas': L.mapbox.tileLayer('mapbox.outdoors'), 'Dark Canvas': L.mapbox.tileLayer('mapbox.dark'), 'Simple Canvas': L.mapbox.tileLayer('mapbox.streets- basique'), }).addTo(map); });
              

De plus, si cela peut aider, je peux compresser les fichiers et fournir un lien téléchargeable vers.


(le doublon de la couche CartoDB n'apparaît pas sur la couche mapbox mais la légende est sur Stack Overflow)

Réponse copiée ci-dessous.


Il semble y avoir plusieurs erreurs ici.

Tout d'abord, vous faciliteriez votre propre débogage en testant chaque fonctionnalité individuelle séparément (bootstrap, cartodb…).

Vous dupliquez plusieurs bibliothèques comprend: Leaflet CSS et JS et jQuery (pas sûr de la version) sont déjà inclus dans CartoDB. Vous incluez même à deux reprises CartoDB ! Cela appelle des résultats imprévisibles.

Ensuite, vous ajoutez d'abord unmapbox.lighttileLayer, puis votre couche CartoDB, puis à nouveaumapbox.light(dans la définition du contrôle des couches). Votre couche CartoDB est donc déjà masquée. C'est très probablement la raison pour laquelle vous voyez l'attribution mais pas la couche sur la carte.

Si vous souhaitez que votre couche CartoDB soit toujours affichée au-dessus de toute couche de base pouvant être sélectionnée via le contrôle des couches, vous la définirez comme un contrôle des couches. recouvrir de sorte qu'il soit toujours ajouté au-dessus des calques de base (à condition que l'utilisateur le garde sélectionné dans le contrôle des calques).

Notez que vous devez utiliser leon('done', function (layer) { /* ajouter aux superpositions de contrôle des calques */ })rappel pour le faire. Voir Comment utiliser les groupes de couches de dépliants avec les couches CartoDB ?

var layerControl = L.control.layers({ 'Grey Canvas': L.mapbox.tileLayer('mapbox.light').addTo(map), 'Street Canvas': L.mapbox.tileLayer('mapbox.streets') , 'Emerald Canvas': L.mapbox.tileLayer('mapbox.outdoors'), 'Dark Canvas': L.mapbox.tileLayer('mapbox.dark'), 'Simple Canvas': L.mapbox.tileLayer('mapbox .streets-basic') }).addTo(map); var cdb_layer = cartodb.createLayer(map, 'https://itsmsd.cartodb.com/api/v2/viz/00873ec2-94ab-11e5-8e1b-0e3ff518bd15/viz.json') .addTo(map).on(' done', function (layer) {layersControl.addOverlay(layer, 'CartoDB'); });

Démo : http://jsfiddle.net/zfLgujhv/1/