Más

¿Error en ControlMapMeasureTool? "Medir un área" crea un cuadro de diálogo duplicado en ArcGIS Engine 10

¿Error en ControlMapMeasureTool?


Cuando agregamos una herramienta de medida al AxToolbarControl a través del diálogo de propiedades, podemos cambiar para medir la longitud y el área en el diálogo que aparece. Pero cuando agregamos un ControlsMapMeasureTool a través de un código como este:

Control de atenuación Como AxMapControl = axMapControl1 Herramienta de atenuación Como nueva herramienta ControlsMapMeasureTool () .OnCreate (control. [Object]) control.CurrentTool = DirectCast (herramienta, ITool)

Seguimos las instrucciones en la documentación Cómo crear un comando o herramienta para trabajar con los controles El cuadro de diálogo aparece pero cuando elegimos "Medir un área" aparece un nuevo cuadro de diálogo Medir y aún podemos medir la longitud. ¿Qué estamos haciendo mal?

Pasos para reproducir:

  1. Cree una nueva aplicación MapControl en VS
  2. Crear un nuevo elemento de menú en el menú "Prueba"
  3. Cree un nuevo controlador de eventos OnClick TestToolStripMenuItem_Click
  4. Pegue el código anterior en el controlador de eventos.
  5. Ejecuta la aplicación
  6. Cargue un mapa que tenga una referencia espacial que sea un sistema de coordenadas proyectadas (no un sistema de coordenadas geográficas).
  7. elija el elemento del menú Prueba
  8. Cambiar a "Medir un área" en el cuadro de diálogo
  9. Arrastre el cuadro de diálogo hacia un lado.
  10. Hay dos cuadros de diálogo activos, pero solo se puede medir la longitud.

Creo que hay dos cuestiones distintas.

1) La medición de área solo se habilitará cuando la referencia espacial del mapa sea un sistema de coordenadas proyectadas (no un sistema de coordenadas geográficas).

2) No debe crear una herramienta si ya está en el control de la barra de herramientas. En su lugar, debe buscarlo y activarlo.

private void activeMeasuretoolToolStripMenuItem_Click (remitente de objeto, EventArgs e) {int idx = axToolbarControl1.Find ("esriControls.ControlsMapMeasureTool"); if (idx> -1) {// usa la herramienta que ya está en la barra de herramientas axToolbarControl1.CurrentTool = (ITool) axToolbarControl1.GetItem (idx) .Command; } else {// agrega la herramienta a la barra de herramientas ControlsMapMeasureTool t = new ControlsMapMeasureToolClass (); t.OnCreate (axMapControl1.Object); axToolbarControl1.AddItem (t); axMapControl1.CurrentTool = (ITool) t; }}

Sé que este hilo tiene cerca de 2 años, pero estoy viendo exactamente el mismo comportamiento.

¿Alguien más sigue viendo este comportamiento? Aparentemente fue / es un error documentado que supuestamente se resolvió en sp3 ... Error NIM-068806, sin embargo, ¿sigo viendo el comportamiento con SP4 instalado?

Gracias Matt