ThinkGeo.com    |     Documentation    |     Premium Support

Display Distance in middle of the path

Hiiii,


I want to display distance between two points on the map, and distance will display at the middle of the path. Same way I add third point of the map, display distance betweem second and third point. I also display total distance at the last point added, not want to display at the second point.


Once the distance path is drawn, value must be maintain on each page refresh.


Also distance path is multiple in the map.....


Plz help me...if possible give me sample code which is very helpful to me


Thanks,


Badal Patel



Hi, 
  
 Please refer to gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/7630/afv/topic/Default.aspx#17516
  
 Thanks, 
 Johnny

Hi Johnny,


I refered your example, but i could not see the distance between two points at the middle of line....I need to display distance between two points on the middle of the path and not want to display as popup but as a label....


Thanks,


Badal Patel



Badal, 
  
  I understand your request. We will publish a project later today that shows just that using a custom LineStyle. If we don’t make it by the end of the day, you will that ready on Monday morning. Thank you for the idea.

Please, check this new project out in the Code Community Distance Line Style. I think this is going to help.


code.thinkgeo.com/projects/s...elinestyle



Thanks Johnny and Val. Your porject was very helpful to me. Thanks a lot once again....


Regards,


Badal Patel



You are welcome. Any other questions, let us know.

Hello,


I am using ThinkGeo Map and Google Map, features provided by map suit. 


In both thinkgeo map and google map, to find the distance between two points, I am using your code mentioned below as you have given to me.


InMemoryFeatureLayer lineShapLayer = new InMemoryFeatureLayer();

        //Adds the CustomDistanceLineStyle for displaying the distance in meter at mid point for each line segment.

        CustomDistanceLineStyle customDistanceLineStyle = new CustomDistanceLineStyle(DistanceUnit.Kilometer, new GeoFont("Arial", 12, DrawingFontStyles.Bold),

            new GeoSolidBrush(GeoColor.StandardColors.Black), new GeoPen(GeoColor.StandardColors.White));

        lineShapLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(customDistanceLineStyle);

        LineShape lineShape = new LineShape();

        newLineShape = null;

        newLineShape = lineShape;

        //Adds a regular LineStyle for displaying in red the LineShape.

        LineStyle lineStyle = new LineStyle(new GeoPen(GeoColor.FromArgb(150, GeoColor.StandardColors.Red), 5));

        lineShapLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(lineStyle);

        lineShapLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

        LayerOverlay layerOverlay = new LayerOverlay("LineOverlay", false, TileType.SingleTile);

        layerOverlay.TransitionEffect = TransitionEffect.None;

        layerOverlay.Layers.Add(lineShapLayer);

        DynamicOverlay.Layers.Add("lineShapeLayer", lineShapLayer);


 


Now, i have added one feature in my site that user can switch to google map from thinkgeo map and vice versa.


I am converting the data of lineShapeLayer - InternalMemoryFeature when user click on google map using projection of google map. Which code is given below:


       Proj4Projection prj4 = new Proj4Projection();

        prj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);

        prj4.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString();

        if (!prj4.IsOpen)

            prj4.Open();

      

        for (int i = 0; i < lineShapeLayer.InternalFeatures.Count; i++)

        {

            lineShapeLayer.InternalFeatures = prj4.ConvertToExternalProjection(lineShapeLayer.InternalFeatures);

        }


 


When I switched from Google Map to Think Geo map, I make the mapunit to GeographyUnit.DecimalDegree and switched to Google Map, make mapunit to GeographyUnit.Meter.


But problem is, when I measured the distance between two points in Thinkgeo map, the measurement value is changed when I switch to google map. In thinkgeo map, I got 0.82 km in thinkgeo while got 0.91km in Google map. Both images I have attached for your reference. 


ThinkGeo Map Image:



Google Map Image:



Why does it do so? What should I do for it?


Thanks,


Badal Patel



Thinkgeo.png (47.5 KB)
google.jpg (83.3 KB)

This is an issue that puzzles a lot of people if they are not aware of some projection considerations. There is another post similar to that one that discusses in length that issue: gis.thinkgeo.com/Support/Discussion...fault.aspx


There is also an project in the Code Community to respond to that issue of measuring distances based on one projection when the map in in another. Check the project Measurements Decimal Degrees code.thinkgeo.com/projects/show/measurements


I think this is going to help you to get a better grasp of what is going on. Thank you.