@@ -72,11 +72,23 @@ void RgLineVectorLayerDirector::makeGraph( RgGraphBuilder *builder, const QVecto
7272 int featureCount = ( int ) vl->featureCount () * 2 ;
7373 int step = 0 ;
7474
75- QgsCoordinateTransform ct ( vl->crs (), builder->destinationCrs () );
76-
75+ QgsCoordinateTransform ct;
7776 QgsDistanceArea da;
78- da.setSourceCrs ( builder->destinationCrs ().srsid () );
79- da.setProjectionsEnabled ( true );
77+ ct.setSourceCrs ( vl->crs () );
78+
79+ if ( builder->coordinateTransformEnabled () )
80+ {
81+ ct.setDestCRS ( builder->destinationCrs () );
82+ da.setProjectionsEnabled ( true );
83+ //
84+ // da.setSourceCrs( builder->destinationCrs().srsid() );
85+ //
86+ }
87+ else
88+ {
89+ ct.setDestCRS ( vl->crs () );
90+ da.setProjectionsEnabled ( false );
91+ }
8092
8193 tiedPoint = QVector< QgsPoint >( additionalPoints.size (), QgsPoint ( 0.0 , 0.0 ) );
8294 TiePointInfo tmpInfo;
@@ -104,8 +116,15 @@ void RgLineVectorLayerDirector::makeGraph( RgGraphBuilder *builder, const QVecto
104116 for ( i = 0 ; i != additionalPoints.size (); ++i )
105117 {
106118 TiePointInfo info;
107- info.mLength = additionalPoints[ i ].sqrDistToSegment ( pt1.x (), pt1.y (), pt2.x (), pt2.y (), info.mTiedPoint );
108-
119+ if ( pt1 == pt2 )
120+ {
121+ info.mLength = additionalPoints[ i ].sqrDist ( pt1 );
122+ info.mTiedPoint = pt1;
123+ }
124+ else
125+ {
126+ info.mLength = additionalPoints[ i ].sqrDistToSegment ( pt1.x (), pt1.y (), pt2.x (), pt2.y (), info.mTiedPoint );
127+ }
109128 if ( pointLengthMap[ i ].mLength > info.mLength )
110129 {
111130 info.mTiedPoint = builder->addVertex ( info.mTiedPoint );
0 commit comments