2009-04-02 7 views
0

J'ai un graphique créé avec Birt et je veux y ajouter une étiquette pour spécifier les 4 régions délimitées par les 2 marqueurs rouges (voir image ci-dessous), une étiquette dans chaque quadrant (centrée si possible).Comment afficher une étiquette de surimpression sur une carte?

Je suis à la recherche d'une solution pour cela, en utilisant directement l'éditeur de tableaux de bord ou en utilisant un javascript (comme je l'ai fait pour les marqueurs rouges).

alt text

+0

Pourriez-vous me s'il vous plaît de plus spécifique? Voulez-vous une étiquette ajoutée dans chaque quadrant, à l'intersection des marqueurs, au-dessous/au-dessus du marqueur de l'axe X, de chaque côté du marqueur de l'axe Y, ou complètement du côté/bas/haut du graphique? – Tom

+0

Désolé. Je veux une étiquette ajoutée dans chaque quadrant (centrée si possible) –

Répondre

1

Afin de centrer dynamiquement un certain type de marqueur dans chaque quadrant du graphique, vous devrez avoir une certaine façon de calculer les coordonnées. Bien sûr, je ne suis pas vraiment familier avec Birt et je fais l'hypothèse que les marqueurs rouges du graphique vont varier.

Quoi qu'il en soit, en supposant que vous pouvez obtenir les coordonnées, vous pouvez écrire une fonction qui pourrait générer dynamiquement l'étiquette basée sur deux paramètres:

function generateLabel(sContent, iXoffset, iYoffset) { 

    var eLabel = document.createElement('span'); 
    eLabel.appendChild(document.createTextNode(sContent)); 

    var eDivision = document.createElement('div'); 
    eDivision.appendChild(eLabel); 

    eDivision.style.left = iXoffset + 'px'; 
    eDivision.style.top = iYoffset + 'px'; 
    // include other styles here... 

    return eDivision; 

} 

puis à partir de là, vous pouvez appeler cette fonction avec le contenu de l'étiquette de jeu et les coordonnées offset:

var eQuadrantOneLabel = generateLabel('Quadrant One', 10, 25); 
// and so on... 

Ensuite, il suffit d'ajouter l'élément au conteneur du graphique (en supposant que est a une id, disons,):

var eGraphContainer = document.getElementById('graph'); 
eGraphContainer.appendChild(eQuadrantOneLabel); 
// and so on for each label... 
Questions connexes