in src/globemap.ts [1209:1274]
private intersectBars() {
if (!this.rayCaster
|| !this.barsGroup
|| !this.mousePosNormalized
|| !this.mousePos) {
return;
}
const rayCaster: THREE.Raycaster = this.rayCaster;
rayCaster.setFromCamera(this.mousePosNormalized, this.camera);
const intersects: THREE.Intersection[] = rayCaster.intersectObjects(this.barsGroup.children);
if (intersects && intersects.length > 0) {
const object: IGlobeMapObject3DWithToolTipData = <IGlobeMapObject3DWithToolTipData>intersects[0].object;
if (!object || !(object).toolTipData) {
return;
}
const toolTipData: { location, longitude, latitude, series, height, heat } = (object).toolTipData;
const toolTipItems: VisualTooltipDataItem[] = [];
if (toolTipData.location.displayName) {
toolTipItems.push(toolTipData.location);
}
if (toolTipData.longitude.displayName) {
toolTipItems.push(toolTipData.longitude);
}
if (toolTipData.latitude.displayName) {
toolTipItems.push(toolTipData.latitude);
}
if (toolTipData.series) {
toolTipItems.push(toolTipData.series);
}
if (toolTipData.height.displayName) {
toolTipItems.push(toolTipData.height);
}
if (toolTipData.heat.displayName) {
toolTipItems.push(toolTipData.heat);
}
this.hoveredBar = object;
const tooltipShowOptions: TooltipShowOptions = {
coordinates: [
this.mousePos.x,
this.mousePos.y
],
isTouchEvent: false,
dataItems: toolTipItems,
identities: []
};
this.visualHost.tooltipService.show(tooltipShowOptions);
} else {
this.hoveredBar = null;
this.hideTooltip();
}
}