ThinkGeo.com    |     Documentation    |     Premium Support

Selecting a range of addresses

The company I work for is evaluating the ThinkGEO map suite and geocoder for integration into our software suite.  Currently I am working on a proof of concept to demonstrate that we can select an area on the map with the mouse and have the map return all the addresses in the selected region.  I am capturing mouse click events and recording the location of right mouse down and right mouse up and translating those click events into a RectangleShape object containing the world coordinates of the region the user selected.  I am having two issues:


 


1.  I would like to handle the users mouse events myself but I do not see a simple way to draw a rectangle on the map by updating a rectangle shape in a mouse move event handler.  Currently I am handling all mouse events and can extract data from the map when a user selects a region of the map with his/her mouse but I am not able to outline the region with a visible rectangle on my marker overlay.   Is there an easy way this can be done on a SimpleMarkerOverlay?


 


2.  I can return the address information for any marker I have placed on the map when a user selects a region of the map in the scenario described above.  What I need to be able to do is return ALL addresses that exist within the region the user selected with his/her mouse.  I am sure this can be done but I dont see a good way to do that with the sample data provided in the desktop and geocoder editions of your software.  A push in the right direction would be very helpful.


 


Thanks in advance!


 


-Brandt



Brandt,


Thanks for your post,


About your two questions I answered them one by one below:


1, I'm sorry I'm not so clear your requirement exactly, according to my mind, I thought you want to update a rectangle shape on a map, is that true? If that, I suggest you to do it using the following code:


 



   winformsMap1.TrackOverlay.TrackMode = TrackMode.None;
                        foreach (Feature feature in winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures)
                        {
                            winformsMap1.EditOverlay.EditShapesLayer.InternalFeatures.Add(feature);
                        }
                        winformsMap1.EditOverlay.CalculateAllControlPoints();
                        winformsMap1.TrackOverlay.TrackShapeLayer.InternalFeatures.Clear();

                        winformsMap1.Refresh(new Overlay[] { winformsMap1.EditOverlay, winformsMap1.TrackOverlay });
Also if you cannot understand it fully, please reference the TrackAndEditShapes sample in the "Editing Feature Layers" catalog of the DesktopEdition HowDoISamples, it shows you how to track a rectangle, edit and update it. This is the simple way to do,


2, I think you talked about batch geocoding processes for all addresses that exist in the rectangle region by the user selected, first we can get all of the addresses information, I believe you can do it easily, because you said you can return the address information for any marker I have placed on the map when a user selects a region of the map. Second please put all of the addresses information to a list and process the geocoding one by one, the "BatchingGeocodingInChicago" sample in the Geocoder HowDoISample shows that,


Here are my explanations for your questions above, if I misunderstood anything please let me know,


Thanks,


Scott,