Hi All,

I need to draw a Polygon Overlay around my route points with a
specified width , i found a similar post here

http://groups.google.com/group/google-maps-api-for-flash/browse_thread/thread/272c7c1f41eb9d4c/d75ea062fc71c682?lnk=gst&q=route+#d75ea062fc71c682

i tried the below code, but if the route points are more than two the
polygon is not properly drawn always ,the polygon tapers at some
points , there is some issue which i was not able to figure out  can
anyone please help me to solve this issue .


        private function drawRoute():void{
                var strokeColor:Number =0x000080;
                var strokeWidth:Number = 1;
                var strokeOpacity:Number = 0.75;
                var fillColor:Number = 0x0000FF;
                var fillOpacity:Number = .5;
            var polygonOptions:PolygonOptions = new PolygonOptions();
            var fillStyle:FillStyle = new FillStyle();
                fillStyle.alpha = fillOpacity;
                fillStyle.color = fillColor;
                polygonOptions.fillStyle = fillStyle;

                var strokeStyle:StrokeStyle = new StrokeStyle();
                strokeStyle.alpha = strokeOpacity;
                strokeStyle.color = strokeColor;
                strokeStyle.thickness = strokeWidth;
                        polygonOptions.strokeStyle = strokeStyle  ;

                var newpointsArray:Array = getPolygonForPath(pointsArray);
                var length:int = newpointsArray.length;
                var latlngArray:Array = new Array();
                var i:int;
                var norProj:IProjection =
map.getCurrentMapType().getProjection();

                for (i = 0; i < length-1; i++){
        
latlngArray.push(norProj.fromPixelToLatLng(newpointsArray[i],map.getZoom()));
                }
           var polygon:Polygon  = new Polygon(latlngArray,polygonOptions);
           map.addOverlay(polygon);
        }


        private function getPointFromAngle(pt:Point, radius:Number,
a:Number):Point {
        return new Point(pt.x + Math.cos(a) * radius, pt.y + Math.sin(a)
* radius);
        }

        private function getPolygonForPath(pts:Array, radius:Number =
10):Array {
        var polygon_pts:Array = [];
        var a:Number = Math.atan2(pts[0].y-pts[pts.length-1].y,
pts[0].x-pts[pts.length-1].x);
        var pa:Number = a+Math.PI/2;
        for(var i:int = 0; i < pts.length; i++) {
                if(i == 0) {
                        polygon_pts.push(getPointFromAngle(pts[i],
radius, Math.atan2(pts[i+1].y-pts[i].y,pts[i+1].x-pts[i].x) - Math.PI/
2));
                } else if(i == pts.length-1) {
                        polygon_pts.push(getPointFromAngle(pts[i],
radius, Math.atan2(pts[i-1].y-pts[i].y,pts[i-1].x-pts[i].x) + Math.PI/
2));
                } else {
                        polygon_pts.push(getPointFromAngle(pts[i],
radius, pa));
                }
        }
        for(i = pts.length-1; i >=0 ; i--) {
                if(i == 0) {
                        polygon_pts.push(getPointFromAngle(pts[i], -
radius, Math.atan2(pts[i+1].y-pts[i].y,pts[i+1].x-pts[i].x) - Math.PI/
2));
                } else if(i == pts.length-1) {
                        polygon_pts.push(getPointFromAngle(pts[i], -
radius, Math.atan2(pts[i-1].y-pts[i].y,pts[i-1].x-pts[i].x) + Math.PI/
2));
                } else {
                        polygon_pts.push(getPointFromAngle(pts[i], -
radius, pa));
                }
        }
        polygon_pts.push(polygon_pts[0]);
        return polygon_pts;
        }

thanks and regards
Prathosh

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps API For Flash" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-maps-api-for-flash?hl=en.

Reply via email to