Vairāk

Kļūda ControlMapMeasureTool? Ar “Measure An Area” tiek izveidots dialoglodziņš ArcGIS Engine 10


Pievienojot AxToolbarControl mērīšanas rīku, izmantojot rekvizītus dialoglodziņā, uznirstošajā dialoglodziņā mēs varam mainīt mēra garumu un laukumu. Bet, kad mēs pievienojam ControlsMapMeasureTool, izmantojot šādu kodu:

Dim kontrole kā AxMapControl = axMapControl1 Dim rīks kā jauns ControlsMapMeasureTool () rīks. OnCreate (vadība. [Objekts]) control.CurrentTool = DirectCast (rīks, ITool)

Mēs izpildījām dokumentācijā sniegtos norādījumus Kā izveidot komandu vai rīku darbam ar vadības ierīcēm Dialoglodziņš tiek parādīts, bet, izvēloties "Mērīt apgabalu", parādās jauns dialoglodziņš Mērīt, un mēs joprojām varam izmērīt tikai garumu. Ko mēs darām nepareizi?

Pavairošanas darbības:

  1. VS izveidojiet jaunu MapControlApplication
  2. Izveidojiet jaunu MenuItem izvēlnē "Test"
  3. Izveidojiet jaunu OnClick notikumu apstrādātāju TestToolStripMenuItem_Click
  4. Ielīmējiet iepriekš minēto kodu notikumu apstrādātājā
  5. Palaidiet lietojumprogrammu
  6. Ielādējiet karti, kurai ir telpiska atsauce, kas ir projicēta koordinātu sistēma (nevis ģeogrāfiska koordinātu sistēma).
  7. izvēlieties izvēlnes vienumu Pārbaudīt
  8. Dialoglodziņā pārejiet uz “Mērīt apgabalu”
  9. Velciet dialogu uz sāniem.
  10. Divi dialoglodziņi ir aktīvi, bet var izmērīt tikai garumu.

Es domāju, ka ir divi atsevišķi jautājumi.

1) Platības mērīšana tiks iespējota tikai tad, ja kartes telpiskā atsauce ir projicēta koordinātu sistēma (nevis ģeogrāfiska koordinātu sistēma).

2) Jums nevajadzētu izveidot rīku, ja tas jau atrodas rīkjoslas vadībā. Tā vietā jums tas jāatrod un jāaktivizē.

private void activMeasuretoolToolStripMenuItem_Click (objektu sūtītājs, EventArgs e) {int idx = axToolbarControl1.Find ("esriControls.ControlsMapMeasureTool"); if (idx> -1) {// izmantojiet rīku, kas jau atrodas rīkjoslā axToolbarControl1.CurrentTool = (ITool) axToolbarControl1.GetItem (idx) .Command; } else {// pievienojiet rīku rīkjoslai ControlsMapMeasureTool t = new ControlsMapMeasureToolClass (); t.OnCreate (axMapControl1.Object); axToolbarControl1.AddItem (t); axMapControl1.CurrentTool = (ITool) t; }}

Es zinu, ka šis pavediens ir gandrīz 2 gadus vecs, bet es redzu tieši tādu pašu uzvedību.

Vai kāds cits joprojām redz šo uzvedību? Acīmredzot tās bija / ir dokumentētas kļūdas, kuras it kā tika novērstas sp3 ... Kļūda NIM-068806, tomēr es joprojām redzu uzvedību ar instalētu SP4?

Paldies Mets