Mais

Bug no ControlMapMeasureTool? “Medir uma área” cria um diálogo duplicado no ArcGIS Engine 10

Bug no ControlMapMeasureTool? “Medir uma área” cria um diálogo duplicado no ArcGIS Engine 10


Quando adicionamos uma ferramenta de medida ao AxToolbarControl por meio da caixa de diálogo de propriedades, podemos mudar para medir o comprimento e a área na caixa de diálogo que aparece. Mas quando adicionamos um ControlsMapMeasureTool por meio de um código como este:

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

Seguimos as instruções nas documentações. Como criar um comando ou ferramenta para trabalhar com os controles A caixa de diálogo é exibida, mas quando escolhemos "Medir uma área", uma nova caixa de diálogo Medir é exibida e ainda podemos medir apenas o comprimento. O que estamos fazendo errado?

Passos para reproduzir:

  1. Crie um novo MapControlApplication no VS
  2. Crie um novo MenuItem no Menu "Teste"
  3. Crie um novo manipulador de eventos OnClick TestToolStripMenuItem_Click
  4. Cole o código acima no manipulador de eventos
  5. Execute o aplicativo
  6. Carregue um mapa que tenha uma referência espacial que seja um sistema de coordenadas projetadas (não um sistema de coordenadas geográficas).
  7. escolha o item de menu Teste
  8. Mude para "Medir uma área" na caixa de diálogo
  9. Arraste a caixa de diálogo para o lado.
  10. Duas caixas de diálogo estão ativas, mas apenas o comprimento pode ser medido.

Acho que existem duas questões distintas.

1) A medição da área só será habilitada quando a referência espacial do mapa for um sistema de coordenadas projetadas (não um sistema de coordenadas geográficas).

2) Você não deve criar uma ferramenta se ela já estiver no controle da barra de ferramentas. Em vez disso, você deve localizá-lo e ativá-lo.

private void activateMeasuretoolToolStripMenuItem_Click (objeto remetente, EventArgs e) {int idx = axToolbarControl1.Find ("esriControls.ControlsMapMeasureTool"); if (idx> -1) {// usar a ferramenta que já está na barra de ferramentas axToolbarControl1.CurrentTool = (ITool) axToolbarControl1.GetItem (idx) .Command; } else {// adiciona a ferramenta à barra de ferramentas ControlsMapMeasureTool t = new ControlsMapMeasureToolClass (); t.OnCreate (axMapControl1.Object); axToolbarControl1.AddItem (t); axMapControl1.CurrentTool = (ITool) t; }}

Eu sei que este tópico tem quase 2 anos, mas estou vendo exatamente o mesmo comportamento.

Alguém ainda está vendo esse comportamento? Aparentemente era / é um bug documentado que supostamente foi resolvido no sp3… Bug NIM-068806, no entanto, ainda estou vendo o comportamento com o SP4 instalado?

Obrigado Matt