|
function ReMarkArrows(routeFeatures) { if(routeFeatures && routeFeatures.length > 1){ var _distance = 0; for (var i=0; i<routeFeatures.length-1; i++) { var Pre_line = routeFeatures[i].getGeometry(); var Next_line = routeFeatures[i+1].getGeometry(); var P0 = Pre_line.getFirstCoordinate(); var P1 = Pre_line.getLastCoordinate(); var N0 = Next_line.getFirstCoordinate(); var N1 = Next_line.getLastCoordinate(); var Pre_lineCoordinates = Pre_line.getCoordinates(); var Next_lineCoordinates = Next_line.getCoordinates(); var pt_center = null; var pt1, pt2; var Pre_Coordinates, Next_Coordinates; //if (P0[0]===N0[0] && P0[1]===N0[1]) { if ( Math.abs(P0[0]-N0[0])<=1 && Math.abs(P0[1]-N0[1])<=1) { pt_center = P0; Pre_Coordinates = Pre_lineCoordinates[0]; pt1 = Pre_Coordinates[1]; Next_Coordinates = Next_lineCoordinates[0]; pt2 = Next_Coordinates[1]; }else //if (P0[0]===N1[0] && P0[1]===N1[1]) { if ( Math.abs(P0[0]-N1[0])<=1 && Math.abs(P0[1]-N1[1])<=1) { pt_center = P0; Pre_Coordinates = Pre_lineCoordinates[0]; pt1 = Pre_Coordinates[1]; Next_Coordinates = Next_lineCoordinates[Next_lineCoordinates.length-1]; pt2 = Next_Coordinates[Next_Coordinates.length-2]; }else //if (P1[0]===N0[0] && P1[1]===N0[1]) { if ( Math.abs(P1[0]-N0[0])<=1 && Math.abs(P1[1]-N0[1])<=1) { pt_center = P1; Pre_Coordinates = Pre_lineCoordinates[Pre_lineCoordinates.length-1]; pt1 = Pre_Coordinates[Pre_Coordinates.length-2]; Next_Coordinates = Next_lineCoordinates[0]; pt2 = Next_Coordinates[1]; }else //if (P1[0]===N1[0] && P1[1]===N1[1]) { if ( Math.abs(P1[0]-N1[0])<=1 && Math.abs(P1[1]-N1[1])<=1) { pt_center = P1; Pre_Coordinates = Pre_lineCoordinates[Pre_lineCoordinates.length-1]; pt1 = Pre_Coordinates[Pre_Coordinates.length-2]; Next_Coordinates = Next_lineCoordinates[Next_lineCoordinates.length-1]; pt2 = Next_Coordinates[Next_Coordinates.length-2]; } _distance = _distance + ol.sphere.getLength(Pre_line); if(pt_center){ var dAx = pt1[0] - pt_center[0]; var dAy = pt1[1] - pt_center[1]; var dBx = pt2[0] - pt_center[0]; var dBy = pt2[1] - pt_center[1]; var angle = Math.atan2(dAx * dBy - dAy * dBx, dAx * dBx + dAy * dBy); angle = angle * (180 / Math.PI); if(angle < 0) angle = 360+angle; var _image = null;; if((angle>=0)&&(angle<=130)){ _image = '../images/Arrows_right.png'; }else if((angle>=230)&&(angle<=360)){ _image = '../images/Arrows_left.png'; } if(_image){ var new_Feature = new ol.Feature({ geometry: new ol.geom.Point(pt_center), }); var _Style =new ol.style.Style({ image: new ol.style.Icon(({ src: _image, anchorYUnits: "pixels", anchorYUnits: 13, anchorOrigin: 'bottom-left', })) }); new_Feature.setStyle(_Style); TopTempLayer.getSource().addFeatures([new_Feature]); _distance = 0; } } } } } |
|