Viac

Ideme dokola v kruhoch ... Buffering / ArcObjects / VBA


Práve som sa začal učiť VBA a ArcObjects a momentálne sa len hrám a snažím sa robiť rôzne veci. To, čo sa snažím urobiť, je kliknúť na nástroj a umožniť používateľovi umiestniť bodovú grafiku na mapu, ale tiež vložiť pridaný bod (značku) do vyrovnávacej pamäte. Môžem získať bod na mape, ale zdá sa, že obieha kruhy, aby fungoval nárazník. Môže mi niekto dať nejaké náznaky (nechcem presnú odpoveď, iba nejaké usmernenie, kde robím chybu.

Kód je tu.

Private Sub Buffer_MouseDown (tlačidlo ByVal tak dlho, posun ByVal tak dlho, ByVal x tak dlho, ByVal y tak dlho) Dim pMxDoc ako IMxDocument 'Vytvoriť objekt pre aktuálny dokument Nastaviť pMxDoc = ThisDocument' Nastaviť objekt na aktuálny dokument Dim pMap Ako IMap 'Vytvoriť objekt pre aktuálnu mapu Nastaviť pMap = pMxDoc.FocusMap 'Nastaviť objekt na aktuálnu aktívnu mapu Dim pPoint As IPoint' Vytvoriť objekt pre bod na mape Nastaviť pPoint = pMxDoc.CurrentLocation 'Nastaviť objekt na aktuálne miesto Dim pElement Ako IElement' Vytvoriť objekt pre grafiku TO JE PRIDANÉ NA MAPU !!!! Set pElement = New MarkerElement 'Nastaviť objekt na nový prvok značky (bodová grafika) pElement.Geometry = pPoint' Priradiť geometriu prvku k bodu. Dim pGraphics As IGraphicsContainer 'Vytvoriť objekt na uchovanie grafiky Nastaviť pGraphics = pMap' Nastaviť objekt na aktuálnu aktívnu mapu pGraphics.AddElement pElement, 0 'Nastaviť pridanú grafiku Dim pActiveView Ako IActiveView' Vytvoriť objekt na aktívne zobrazenie mapy Nastaviť pActiveView = pMxDoc.ActiveView „Nastaviť objekt na aktívne zobrazenie“ -------------- CREATE BUFFER ----------------------- - 'Dim pSpaRef As ISpatialReference3 Set pSpaRef = pMap.SpatialReference Dim pFCBuffer As IFeatureCursorBuffer2' Create Object for buffer Set pFCBuffer = New FeatureCursorBuffer 'Set object for new buffer pFCBuffer.Dissolve = True pFCBuffer.ValueDistance = Set .DataFrameSpatialReference = pSpaRef Nastaviť pFCBuffer.SourceSpatialReference = pSpaRef Nastaviť pFCBuffer.TargetSpatialReference = pSpaRef Dim pCGLayer Ako ICompositeGraphicsLayer2 Nastaviť pCGLayer = Nový CompositeGraphicsLayer Dim pGBererPlayer er.BufferToGraphics pGLayer pActiveView.PartialRefresh esriViewGraphics, pElement, Nothing '[čiastočné obnovenie grafického prvku. Koniec Sub

Halil,

Rozhranie, ktoré používate na vytvorenie vyrovnávacích pamätí IFeatureCursorBuffer2 vytvára medzipamäte pre vybrané funkcie. Váš bod, ktorý vytvoríte na základe kliknutia na tlačidlo používateľov, nie je vlastnosťou, ale a grafický ktoré pridávate do grafického kontajnera mapy. A Funkcia je v podstate riadok v tabuľke alebo trieda funkcií.

Keď pridávate svoj bod ako grafiku, predpokladám, že vyrovnávacia pamäť, ktorú chcete vytvoriť, tiež skončí ako grafika. Použite rozhranie ITopologicalOperator a je to metóda Nárazník ak chcete vytvoriť mnohouholník, urobte to isté ako s vaším bodom a vytvorte grafický prvok.