Suite

Cartodb Feature Click avec deux couches superposées

Cartodb Feature Click avec deux couches superposées


Nous utilisons Google MAP API V3 et CartoDB. J'essaie de créer la fenêtre de la boîte d'informations personnalisée lorsque l'utilisateur a cliqué sur le marqueur de points CartoDB. Nous avons deux couches sur la carte Google, la première pour la couche de polygone de la zone large du Royaume-Uni et l'autre est représentée par les maisons dans chaque zone de quartier par des marqueurs de points sur la couche de quartier et les deux couches ont des événements de clic de caractéristique individuels (c'est-à-dire un polygone de zone de quartier zoomé au clic et le marqueur de points affichera la boîte d'informations au clic). Mais chaque fois que je clique sur la couche de zone de zone de marqueur de points qui se trouve derrière ce marqueur de points, déclenche également un événement de clic de fonction avec cela. Donc, je veux juste déclencher les événements de clic de la fonction de marqueur de points pour afficher la boîte d'informations lorsque l'utilisateur a cliqué dessus.

fonction drawWardOnMap() {

var sqlOù; cartodb.createLayer(map, { user_name : nom d'utilisateur, tapez : 'cartodb', sublayers :[{ sql : "SELECT * from table", cartocss : $('#ward_heatmap_index').html().format('units') , interactivité : "units, cartodb_id, the_geom_webmercator, wd13nm, wd11cd, govtid, localarea, geometry " }] }) .addTo(map) .done(function (layer) { layer.setInteraction(true); GLOBAL_WARDS_HEATMAP_LAYER = layer; getSubLayer(0).on('mouseover', function(e, latlng, pos, data, layerIndex) { }); layer.on('featureClick', function(e, latlng, pos, data, layerIndex) { if( layerIndex == 1 ) { getUnitDetailsInfoBoxStats(data, "yes-show-it"); return; } else if(layerIndex == 0 ) { getPointsOnMap(); } }); layer.getSubLayer(0).on('featureOut ', function(e, pos, latlng, data, layerIndex) { }); }) .error(function (){ console.log('problème d'ajout de 2ème couche'); });

}

fonction getPointsOnMap() {

var _numSublayers = GLOBAL_WARDS_HEATMAP_LAYER.getSubLayerCount(); console.log("_numSublayers: " + _numSublayers); if( _numSublayers == 1 ) { GLOBAL_WARDS_HEATMAP_LAYER.createSubLayer({ sql: _SQLString, cartocss: _CartoCss, interactivité: "rslid, non_pi_name, lrdid, lat, lang, code postal, district_name, unitdgovt13_cdare, wroid, type_lat_desc, wroid, wroid_type11_desc, wroid ward_centroid_lang, total_mile_s_count" }) GLOBAL_WARDS_HEATMAP_LAYER.getSubLayer(1).setInteraction(true); } else if( _numSublayers == 2 ) { var _subLayer = GLOBAL_WARDS_HEATMAP_LAYER.getSubLayer(1); _subLayer.setSQL(_SQLString); _subLayer.setCartoCSS(_CartoCss); _subLayer.setInteractivity('rslid, non_pi_name, lrdid, lat, lang, code postal, district_name, unit_type_desc, wd11cd, wd13nm, govtid, localarea, ward_centroid_lat, ward_centroid_lang, total_mile_s_count'); _subLayer.setInteraction(true); }

}


Vous n'avez pas mentionné comment vous lancez lepolygone de la zone de servicecouche. Supposons que si vous utilisezcartodb.createlayerfonction, configurationfenêtre d'information:fauxmasque la fenêtre d'information de ce calque

cartodb.createLayer(map, 'url_to_polygon_layer', {infowindow:false}).addTo(map)

De la même manière si vous utilisezcartodb.createVis, qui passefenêtre d'information:fauxmasquerait la fenêtre d'information. J'espère que cela vous aide. S'il y a un autre cas, modifiez votre question ou commentaire ci-dessous.

Édité ajouterfenêtre d'information:fauxcomme indiqué ci-dessous

cartodb.createLayer(map, { user_name : nom d'utilisateur, tapez : 'cartodb', infowindow : false, sublayers :[{ sql : "SELECT * from table", cartocss : $('#ward_heatmap_index').html().format( 'unités'), interactivité : "unités, cartodb_id, the_geom_webmercator, wd13nm, wd11cd, govtid, localarea, geometry " }]

})