Suite

Bug dans ControlMapMeasureTool ? « Mesurer une zone » crée une boîte de dialogue en double dans ArcGIS Engine 10

Bug dans ControlMapMeasureTool ? « Mesurer une zone » crée une boîte de dialogue en double dans ArcGIS Engine 10


Lorsque nous ajoutons un outil de mesure à AxToolbarControl via la boîte de dialogue des propriétés, nous pouvons changer pour mesurer la longueur et la surface dans la boîte de dialogue qui s'affiche. Mais lorsque nous ajoutons un ControlsMapMeasureTool via un code comme celui-ci :

Dim control As AxMapControl = axMapControl1 Dim tool As New ControlsMapMeasureTool() tool.OnCreate(control.[Object]) control.CurrentTool = DirectCast(tool, ITool)

Nous avons suivi les instructions dans les documentations Comment créer une commande ou un outil pour travailler avec les contrôles La boîte de dialogue apparaît mais lorsque nous choisissons "Mesurer une zone", une nouvelle boîte de dialogue Mesurer apparaît et nous ne pouvons toujours mesurer que la longueur. Que faisons-nous de mal?

Étapes à reproduire :

  1. Créer un nouveau MapControlApplication dans VS
  2. Créez un nouvel élément de menu dans le menu "Test"
  3. Créer un nouveau gestionnaire d'événements OnClick TestToolStripMenuItem_Click
  4. Collez le code ci-dessus dans le gestionnaire d'événements
  5. Exécutez l'application
  6. Chargez une carte qui a une référence spatiale qui est un système de coordonnées projetées (pas un système de coordonnées géographiques).
  7. choisissez l'élément de menu Tester
  8. Passez à "Mesurer une zone" dans la boîte de dialogue
  9. Faites glisser la boîte de dialogue sur le côté.
  10. Deux boîtes de dialogue sont actives mais seule la longueur peut être mesurée.

Je pense qu'il y a deux problèmes distincts.

1) La mesure de surface ne sera activée que lorsque la référence spatiale de la carte est un système de coordonnées projetées (pas un système de coordonnées géographiques).

2) Vous ne devez pas créer un outil s'il est déjà dans le contrôle de la barre d'outils. Au lieu de cela, vous devriez le trouver et l'activer.

private void activateMeasuretoolToolStripMenuItem_Click(objet expéditeur, EventArgs e) { int idx = axToolbarControl1.Find("esriControls.ControlsMapMeasureTool"); if(idx > -1) { // utilise l'outil qui est déjà dans la barre d'outils axToolbarControl1.CurrentTool = (ITool)axToolbarControl1.GetItem(idx).Command; } else { // ajoute l'outil à la barre d'outils ControlsMapMeasureTool t = new ControlsMapMeasureToolClass(); t.OnCreate(axMapControl1.Object); axToolbarControl1.AddItem(t); axMapControl1.CurrentTool = (ITool)t; } }

Je sais que ce fil a près de 2 ans mais je constate exactement le même comportement.

Est-ce que quelqu'un d'autre voit encore ce comportement ? Apparemment, il s'agissait d'un bogue documenté qui aurait été résolu dans le sp3… Bug NIM-068806, mais je vois toujours le comportement avec le SP4 installé ?

Merci Matt