ThinkGeo.com    |     Documentation    |     Premium Support

RulerTrackInteracticeOverlay Issue

Hello,



I am trying to use the RulerTrackInteractiveOverlay from the Ruler Overlay sample project.  I converted the code to VB, and can compile and run it, but when I try to draw the ruler, or even just move the map, the code hangs up.  If I hit the pause button, the IDE indicates that the code is stuck on the line Lock.EnterWriteLock, in the following method:





Protected Overrides Function MouseUpCore(ByVal interactionArguments As InteractionArguments) As InteractiveResult
            'Removes the line of the ruler at finishing dragging (at mouse up event).
            Dim interactiveResult As New InteractiveResult()
 
            interactiveResult.DrawThisOverlay = InteractiveOverlayDrawType.Draw
            interactiveResult.ProcessOtherOverlaysMode = ProcessOtherOverlaysMode.DoNotProcessOtherOverlays
 
            If mouseDown = 1 Then
                mouseDown = 0
                Lock.EnterWriteLock()
                TrackShapeLayer.InternalFeatures.Remove(currentFeatureKey)
                Lock.ExitWriteLock()
            End If
            Return interactiveResult
        End Function



One thing to note is that I already have an override in place for MouseDownCore from the TrackZoomInWithoutShiftKey.ModeInteractiveOverlay sample.  Could these two overrides be conflicting in some way?





Thanks,

Dib





Hi Dib,



I am not sure whether your override conflict, but I convert this sample to VB and it works well here.



Please compare our projects and see where is different.



Regards,



Don

Post11346.zip (14.8 KB)

Don, 
  
 Downloaded and ran.  I get the following error on a left or right-click drag: 
  
 24144: This operation cannot be completed because the instance is not valid. Use MakeValid to convert the instance to a valid instance. Note that MakeValid may cause the points of a geometry instance to shift slightly. 
  
  


Also, I am currently running 6.0.333

Hi Dib, 
  
 Thanks for your further information, but I am sorry to say that the problem didn’t show up on our end, would you please get the latest version 7.0.15.0 and try it again? Following is a captured vedio of our test: screencast.com/t/J9tkkmqsDW3v 
  
 if you have any more question , please feel free to let us know. 
  
 Best Regards 
  
 Summer

Summer, 
  
 I DL’ed v7, and with a couple of changes it is working.  I had to comment out Lock.EnterWriteLock() and Lock.ExitWriteLock() in both MouseUpCore and DrawCore, and that did the trick.  If I comment them out in MouseMoveCore, then the line doesn’t get drawn at all.  Not sure why those make a difference, but it is running now. 
  
 Thanks, 
 Dib 


Hi Dib,  
  
 Great to hear it is working now and thanks for sharing this with us, if you have any more question, please feel free to let us know. 
  
 Best Regards 
  
 Summer

One thing I have noticed is, west of 180, the line rulerLineShape.GetLength(GeographyUnit.DecimalDegree, DistanceUnit.Feet) errors out with this message: 
  
 The decimal degree longitude value you provided was out of range. 
 Parameter name: fromLongitude 
  
 It works fine with the GeographyUnit set to .Feet or .Meter 
  


Hi Dib,



Thanks for reporting this, this is because the rulerLineShape has vertex which has crossed the boundary -180, attached is a walkaround for it, would you please try it?



if you have any more question , please feel free to let us know.



Best Regards



Summer




Post11346.txt (1005 Bytes)

Thanks Summer, that’s basically what I had done to get around it.

Hi Dib, 
  
 Great to hear a walkaround if found and thanks for sharing this with us, if you have any more question, please feel free to let us know. 
  
 Best Regards 
  
 Summer

My last post seems to have dropped: 
  
 Two questions related to this: 
  
 1. The labels move very nicely, but the pointshapes that the labels are based on do not move.  Is there a way to make sure they move when a label moves? 
  
 2. Is there a way to get the four points of the bounding box around the label?  If I get the bounding box for the feature, it is for the pointshape, which makes sense.  I am trying to draw a line from a different point to the closest corner of the label, but I can’t find a way to get the label’s bounding box. 
  


Hi Dib, 
  
 Would you please check thinkgeo.com/forums/MapSuite/tabid/143/aft/11360/Default.aspx , we have replied it in there. 
  
 Best Regards 
  
 Summer