Suite

FeatureClick ne fonctionnera pas dans cartoDB

FeatureClick ne fonctionnera pas dans cartoDB


EDIT : Lien vers le référentiel contenant les fichiers. Ouvrez leindex.htmlfichier dans leimportationsetexportationsDossiers.

je peux tout avoir sauffonctioncCliqueztravailler.

Mon JS :

window.onload = function(){ var cartoDbTableName = 'sipri_import_export_map_1950_2014'; var domId = 'carte'; var mapStyle = document.getElementsByClassName('map-style'); var lat = 0 ; var lon = 0; var zoomLvl = 2; var options = { center : [lat,lon], zoom : zoomLvl } ; var mapObject = new L.Map(domId,options); var layerSource = { user_name : 'chrismp', type : 'cartodb', sous-couches : [ { sql: "SELECT * FROM "+cartoDbTableName+" WHERE (gwsyear <= 1950 AND gwsyear > 0)", cartocss: mapStyle[0]. interneHTML } ] }; L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png">

Vous devez définir les colonnes d'interactivité disponibles dans votre couche :

cartodb.createLayer(map,{ type : "cartodb", user_name : userName, sous-couches : [{ sql : "SELECT * FROM table", cartocss : myCSS, interactivité : ['cartodb_id','attribute1','attribute2'] } ] })

Pour que l'interactivité fonctionne, vous devez vous assurer d'inclure les colonnes de votre table de données avec lesquelles vous souhaitez interagir. Dans votre cas, il semble que vous pourriez être intéressé par legwsyearcolonne de vos données.

Vous devez modifier votre code comme suit dans createLayer :

cartodb.createLayer(mapObject,layerSource) .addTo(mapObject) .on('done',function(layer){ layer.getSubLayer(0).setInteraction(true); layer.getSubLayer(0).setInteractivity('gwsyear') ; // doit inclure au moins une colonne pour activer l'interactivité layer.getSubLayer(0).on('featureClick', function(e, latlng, pos, data, subLayerIndex) { console.log(e, latlng, pos, data , subLayerIndex); }).on('error',function(err){ console.log('featureClick error: '+err); }); }).on('error',function(err){ console. log(err); });

La différence est l'ajout de :

layer.getSubLayer(0).layer.getSubLayer(0).setInteraction(true); layer.getSubLayer(0).setInteractivity('gwsyear');

Si vous n'êtes pas préoccupé par la colonne à inclure, indiquezid_cartodbau lieu de cela car c'est une colonne plus agnostique.


Voir la vidéo: Using CARTO to monetize mobile event data in Telecommunications.