ok this kinda worked for me...for putting an arrow on a line, now this
is a line..not a polyline.
I made this function little function
--------------------------
function getAngleofLine(pointList) //calculate angle for screen
{
// point list is an array of OpenLayers.Geometry.Point having two
points of a line
var startPt=map.getPixelFromLonLat(new
OpenLayers.LonLat(pointList[0].x,pointList[0].y));
var endPt=map.getPixelFromLonLat(new
OpenLayers.LonLat(pointList[1].x,pointList[1].y));
//in the above line I think it would work too if we use Coordinates
instead of Pixels, but I used pixel cause its easy to do the math with
var dy=endPt.y - startPt.y;
var dx=endPt.x - startPt.x;
var angle=Math.atan(dy/dx) / (Math.PI/180); //convert to degrees
if(dx<0) // adjustment in angle for line moving to bottom
angle-=180; // switch direction..if I dont do this.. the traigle will
point in other direction in certain cases
return angle;
}
..how to use
///////////
var line=new OpenLayers.Geometry.LineString(pointList); // line
//add arrow for this line
var angle=getAngleofLine(pointList);
if(isNaN(angle))
{
var shape="circle";
angle=0; // when two consecutive records are at
same
position..ther wil be no angle
var pt= new
OpenLayers.Geometry.Point(pointList[0].x,pointList[0].y); // point for
arow
}
else{
var shape="triangle";
angle-=90; //<--well I had to do this.. it just
worked for
me..I would appreciate a feedback on this
var
arrowX=pointList[1].x+((pointList[0].x-pointList[1].x)*0.95);
var
arrowY=pointList[1].y+((pointList[0].y-pointList[1].y)*0.95);
var pt= new
OpenLayers.Geometry.Point(arrowX,arrowY); //
point for arow
}
var gc=new OpenLayers.Geometry.Collection([line,pt]);
// collection
var lineFeature = new
OpenLayers.Feature.Vector(gc,null, //
geom,data,style
{
strokeColor: "#4682B4",
//http://gucky.uni-muenster.de/cgi-bin/rgbtab-en
fillColor: "#00688B",
strokeWidth: 2,
strokeOpacity : 0.8,
pointRadius: 6,
graphicName :shape,
rotation :angle
}
);
On Sun, Oct 3, 2010 at 3:30 AM, Imran Rajjad <[email protected]> wrote:
> Well I figured it out , instead of adding a line, add a collection of
> geometry having a line and point.. set the shape of point to traigle
> and calculate the rotation using simple atan(dy/dx). I will share the
> code on Monday with you
>
> regards,
> Imran
>
> On Fri, Oct 1, 2010 at 2:19 PM, Gagan Bansal <[email protected]> wrote:
>>
>> Hi,
>>
>> I was also looking for this feature, i.e. showing the line direction. So
>> based on Sveen suggestion I have written this example
>>
>> http://gaganb.wordpress.com/2010/09/30/draw-line-direction-on-openlayers-feature/
>>
>> Regards,
>> Gagan
>> --
>> View this message in context:
>> http://osgeo-org.1803224.n2.nabble.com/add-an-arrow-to-line-feature-tp5234002p5590646.html
>> Sent from the OpenLayers Users mailing list archive at Nabble.com.
>> _______________________________________________
>> Users mailing list
>> [email protected]
>> http://lists.osgeo.org/mailman/listinfo/openlayers-users
>>
>
>
>
> --
> I.R
>
--
I.R
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users