我在Carto地图中显示了某个子图层的信息。首先,我将展示我的代码。我创建了图层选项,然后我得到了我的子图层。我设置了它的选项和infowindow的第一个版本。之后,我创建了事件onclick,根据我之前声明的变量更改了infowindow。
var subLayerOptions2 = {
sql: "SELECT * FROM zonas WHERE cartodb_id IN (SELECT zonaid FROM devices_zonas WHERE deviceid IN (SELECT deviceid FROM users_devices WHERE userid=" + this.auth.getUserId() + "))",
cartocss: "#layer {polygon-fill: " + ConstantesColores.colores[3] + "; polygon-opacity: 0.25; line-color: " + ConstantesColores.colores[3] + "; line-width: 1; line-opacity: 1;}",
interactivity: ['cartodb_id']
}
// Creacion e introduccion del layer en el mapa
var sublayer2 = layer.getSubLayer(2);
sublayer2.set(subLayerOptions2);
sublayer2.infowindow.set('template', infow);
sublayer2.on('featureClick', (e, latlng, pos, data, layer) => {
sublayer2.infowindow.set('template', infow.replace("#DispAsociados#", arrayZonasConDisp[data.cartodb_id].info));
alert("Hey! You clicked " + data.cartodb_id);
});
sublayers.push(sublayer2);
问题在于,第一次点击地图的一个元素时,infowindow没有很好地更新,变量是空的,但是当我第二次点击时它看起来很好。如果我更改了我单击的元素,则第一次出现与最后一次点击相对应的信息,而不是此信息。这就像一个延迟。它总是显示前一个的信息。
有谁知道为什么会这样?