ThinkGeo.com    |     Documentation    |     Premium Support

Pick a point from a map and drop to another location

Hello,


I want to pick the point added on the Google map and drop it into another location. I am able to plot a point at the specified location on the map, but not able to pick it and drop it. So please help me to achieve this functionality.


Waiting for the reply.


Thanks,


Akku



Hello, Akku, 
 Thanks for your input and questions. 
  
 I think what you need to do is to edit the point inmemoryFeatureLayer with a updated location. See following HowDoI sample shows you how to edit a inmemoryFeatuerlayer: 
 HowDoI  Editing Feature Layers 
  
 Any more questions just feel free to let me know. 
  
 Thanks. 
  
 Yale

Yale, 



I think you have not understood my problem. Samples in the Editing Feature Layers shows how to plt,delete and edit he shape. But, I want to plot a point in a map and then it should have the feature that I can pick that point and place to any other location by clicking on the point to pick it and then place it to a location where I click the mouse. I am able to plot the point but can't move it to another location. So please help. 



Waiting for the reply. 



Thanks, 

Akku 

 



Akku,


Hope my understanding is not too far from you. See following code using the edit logic used in the HowDoI sample, the code will update the location of the point in the MapClick event.



private void Form1_Load(object sender, EventArgs e)
        {
            //Set the full extent and the background color 
            winformsMap1.MapUnit = GeographyUnit.Meter;
            winformsMap1.CurrentExtent = new RectangleShape(-10000000, 10000000, 10000000, -10000000);

            GoogleMapsLayer googleMapLayer = new GoogleMapsLayer();
            googleMapLayer.CacheDirectory = @"..\..\GoogleMapImageCache";

            InMemoryFeatureLayer pointLayer = new InMemoryFeatureLayer();
            pointLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1;
            pointLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            double longtitude = 77.217;
            double lattidue = 28.667;
            Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();
            proj4.Open();
            Vertex vertex = proj4.ConvertToExternalProjection(longtitude, lattidue);
            proj4.Close();
            pointLayer.InternalFeatures.Add("Point",new Feature(vertex,"Point"));


            LayerOverlay layeroverlay = new LayerOverlay();
            layeroverlay.Layers.Add(googleMapLayer);
            layeroverlay.Layers.Add("PointLayer",pointLayer);
            winformsMap1.Overlays.Add("LayerOverlay", layeroverlay);

            winformsMap1.MapClick += new EventHandler<MapClickWinformsMapEventArgs>(winformsMap1_MapClick);

            winformsMap1.Refresh();
        }

        void winformsMap1_MapClick(object sender, MapClickWinformsMapEventArgs e)
        {
            double x= e.WorldX;
            double y = e.WorldY;

            InMemoryFeatureLayer pointLayer = (InMemoryFeatureLayer)winformsMap1.FindFeatureLayer("PointLayer");
            pointLayer.Open();
            pointLayer.EditTools.BeginTransaction();
            Feature newFeature = new Feature(e.WorldX,e.WorldY,"Point");
            pointLayer.EditTools.Update(newFeature);
            TransactionResult result = pointLayer.EditTools.CommitTransaction();
            pointLayer.Close();

            Overlay overlay = winformsMap1.Overlays["LayerOverlay"];
            winformsMap1.Refresh(overlay);
        }

Any more questions just feel free to let me know.


Thanks.


Yale

 



Yale, 
  
 Sorry, but my requirement is that I can move the point and also show it  moving through a path i.e, line or GreatCircle using Timer. As like there is a sample where aeroplane moves on the GreatCircle. But I am using Meter as GeographyUnit thats why I am facing the proble. 
  
 Thanks, 
 Akku

Yale, 
  
 Sorry, but my requirement is that I can move the point and also show it  moving through a path i.e, line or GreatCircle using Timer. As like there is a sample where aeroplane moves on the GreatCircle. But I am using Meter as GeographyUnit thats why I am facing the problem. 
  
 Thanks, 
 Akku

Yale, 
  
 Sorry, but my requirement is that I can move the point and also show it  moving through a path i.e, line or GreatCircle using Timer. As like there is a sample where aeroplane moves on the GreatCircle. But I am using Meter as GeographyUnit thats why I am facing the problem. 
  
 Thanks, 
 Akku

Akku, 
  
 Thanks for your input. 
  
 I did not try it, while I think this API should work no matter in DecimalDegree or Meter. Please give me a concrete MultiLineShape(WKT is OK) , and I will have a try if you want. 
  
 Any more questions just feel free to let me know. 
  
 Thanks. 
  
 Yale