ThinkGeo.com    |     Documentation    |     Premium Support

Plotting points

Hello,

I am new to the Desktop API and having to learn very much rather quickly. I’m designing an application where a user will enter information for a starting point (lat and long) and an ending point (lat and long). They can either select the point from a drop down list, enter the lat and long, or click on the map to select each start/end point. 



In my application there can be 1-72 individual starting/ending points or one starting point with up to 72 ending points, or many other combinations. I have 4 requirements that I need advise on:




        
  1. Starting/ending points must be draggable,

  2.     
  3. Starting and ending points must be different colors (Red for starting, green for ending)

  4.     
  5. Each set of points must be connected by a line,

  6.     
  7. the biggie, the line must update it’s color (red,yellow,green) depending on information received from another application of ours. 


I’ve been experimenting with using an InMemoryFeatureLayer, drawing the points and connecting them with a line. Obviously I’m experiencing problems coloring both points and line differently. I’m wondering how many points can be added to a layer and how many layers can be added before performance slows down. One suggestion I received from the guys at work was to use one layer for the starting points, one for the ending points, and another for the lines. Then I would only have to worry about making #4 above work correctly.



I’ve looked at the different samples and picked up a lot of ideas, but I’m open to any and all suggestions as to the correct way to go about doing this.



Thank you all in advance!



Hi Cheryle,



I think there is a better way by implement a custom Overlay, I got the inspiration from an online sample from wiki.thinkgeo.com/wiki/Map_S…oint_Style


 We can add the properties like StartPointStyle,EndPointStyle in this overlay and in its drawCore method, we draw fill the difference colors to the point style based on the features column value. Some pseude code is like the blow:


class DragInteractiveOverlay : EditInteractiveOverlay
    {
        private PointStyle startpointstyle;
        private PointStyle endpointstyle;
//Overrides the DrawCore function.
        protected override void DrawCore(GeoCanvas canvas)
 //Draws the Edit Shapes as default.
            Collection<SimpleCandidate> labelsInAllLayers = new Collection<SimpleCandidate>();
            EditShapesLayer.Open();
            EditShapesLayer.Draw(canvas, labelsInAllLayers);
            canvas.Flush();
  
            //Draws the control points. 
            ExistingControlPointsLayer.Open();
            Collection<Feature> controlPoints = ExistingControlPointsLayer.FeatureSource.GetAllFeatures(ReturningColumnsType.AllColumns);
  
            //Loops thru the control points.
            var firstFeature = controlPoints[0];
        startpointstyle.FillColor = firstFeature.ColumnValues[“Color”];
            startpointstyle.Draw(firstFeature…);
 
            var endFeature = controlPoints[0];
        endpointstyle.FillColor = firstFeature.ColumnValues[“Color”];
            endpointstyle.Draw(firstFeature…);

        }
}

Another thing I think you may try is we create a custom Value style and based on its difference value of feature, we can specify a difference style to draw this feature. I will think into much if you are interesting on this way.



Any questions, please feel free to let us know.

Thanks,

Troy




Thank you Troy for the idea. Sorry I’ve been so long in responding I was pulled to a different project for a bit.



I’ve been able to get the dragInteractiveOverlay layer to work perfectly, but I haven’t been able to implement your idea to change the start/end point colors. Do I have to add a column to the layer for “color”? How do I add a column and data to that column? I’ve figured out how to add columns and data since I last posted so I’m working on trying to implement your idea. I’ll keep plugging away :)



Again, thank you for your help Troy,

Cheryle

Hi Cheryle, 



It’s great you figured it out and good lucky for you.

If any questions, please feel free to let us know.

Thanks,

Troy