轨迹回放--车辆移动方向
2017-11-16 14:11
435 查看
最近在做车辆轨迹回放,整理了一些内容。
返回的路网数据(经纬度点)
计算车辆运行的方向,通过向量P1→P2(经纬度值)与水平线的角度,计算车辆在P1点的运行方向。
//向量与水平线的角度 var test=angle({x:1,y:1},{x:0,y:0});
function angle(start,end){
var diff_x = end.x - start.x;
var diff_y = end.y - start.y;
var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
if(diff_x == 0){
if(diff_y == 0){
return 0;//如果起始点相同,则返回0
}else if(diff_y>0){
return 90;//正北方向
}else{
return 270; //正南方向
}
}else if(diff_x<0){
if(diff_y>0){
return 180+angle; //第二向量 (1,1)(0,2) 135 angle :-45
}else{
return 180+angle; //第三向量 (1,1)(0,0) 225 angle :45
}
}else { //if(diff_x>0){
if(diff_y>0){
return angle; //第一向量 (1,1)(2,2) 45 angle 45
}else{
return 360+angle; //第四向量(1,1)(2,0) 315 angle -45
}
}
}
/*function getTransDirection(directionNum) {
// 实时方向 0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
direction = "正东";
} else if (directionNum > 20 && directionNum < 70) {
direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
direction = "东南";
} else {
direction = '未知';
}
return direction;
}
*/
function angle(start,end){
var diff_x = end.x - start.x;
var diff_y = end.y - start.y;
var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
if(diff_x == 0){
if(diff_y == 0){
return 0;//如果起始点相同,则返回0
}else if(diff_y>0){
return 90;//正北方向
}else{
return 270; //正南方向
}
}else if(diff_x<0){
if(diff_y>0){
return 180+angle; //第二向量 (1,1)(0,2) 135 angle :-45
}else{
return 180+angle; //第三向量 (1,1)(0,0) 225 angle :45
}
}else { //if(diff_x>0){
if(diff_y>0){
return angle; //第一向量 (1,1)(2,2) 45 angle 45
}else{
return 360+angle; //第四向量(1,1)(2,0) 315 angle -45
}
}
}
/*function getTransDirection(directionNum) {
// 实时方向 0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
direction = "正东";
} else if (directionNum > 20 && directionNum < 70) {
direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
direction = "东南";
} else {
direction = '未知';
}
return direction;
}
*/
返回的路网数据(经纬度点)
计算车辆运行的方向,通过向量P1→P2(经纬度值)与水平线的角度,计算车辆在P1点的运行方向。
//向量与水平线的角度 var test=angle({x:1,y:1},{x:0,y:0});
function angle(start,end){
var diff_x = end.x - start.x;
var diff_y = end.y - start.y;
var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
if(diff_x == 0){
if(diff_y == 0){
return 0;//如果起始点相同,则返回0
}else if(diff_y>0){
return 90;//正北方向
}else{
return 270; //正南方向
}
}else if(diff_x<0){
if(diff_y>0){
return 180+angle; //第二向量 (1,1)(0,2) 135 angle :-45
}else{
return 180+angle; //第三向量 (1,1)(0,0) 225 angle :45
}
}else { //if(diff_x>0){
if(diff_y>0){
return angle; //第一向量 (1,1)(2,2) 45 angle 45
}else{
return 360+angle; //第四向量(1,1)(2,0) 315 angle -45
}
}
}
/*function getTransDirection(directionNum) {
// 实时方向 0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
direction = "正东";
} else if (directionNum > 20 && directionNum < 70) {
direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
direction = "东南";
} else {
direction = '未知';
}
return direction;
}
*/
function angle(start,end){
var diff_x = end.x - start.x;
var diff_y = end.y - start.y;
var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
if(diff_x == 0){
if(diff_y == 0){
return 0;//如果起始点相同,则返回0
}else if(diff_y>0){
return 90;//正北方向
}else{
return 270; //正南方向
}
}else if(diff_x<0){
if(diff_y>0){
return 180+angle; //第二向量 (1,1)(0,2) 135 angle :-45
}else{
return 180+angle; //第三向量 (1,1)(0,0) 225 angle :45
}
}else { //if(diff_x>0){
if(diff_y>0){
return angle; //第一向量 (1,1)(2,2) 45 angle 45
}else{
return 360+angle; //第四向量(1,1)(2,0) 315 angle -45
}
}
}
/*function getTransDirection(directionNum) {
// 实时方向 0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
direction = "正东";
} else if (directionNum > 20 && directionNum < 70) {
direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
direction = "东南";
} else {
direction = '未知';
}
return direction;
}
*/
相关文章推荐
- mapx轨迹回放中车辆行驶方向,
- Mapxtreme2008 Asp.net实现小车移动(轨迹回放)
- Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,轨迹回放,导航等)
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
- bing地图车辆轨迹回放代码
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
- 百度地图实现车辆轨迹移动播放(baidu map api)
- 谷歌地图实现车辆轨迹移动播放(google map api)
- openlayers 3 实现车辆轨迹回放
- 高德地图实现对应车辆的轨迹回放与轨迹的清除重绘制(浏览器支持: PathSimplifier目前依赖Canvas进行绘制,因此不支持IE9及以下浏览器)
- 百度地图进行车辆轨迹回放开发时碰到的问题
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
- Mapxtreme2008 Asp.net实现小车移动(轨迹回放)
- 基于高德地图API实现车辆轨迹回放并显示实时坐标
- 百度地图JavascriptApi Marker平滑移动及车头指向行径方向
- 百度地图JavascriptApi Marker平滑移动及车头指向行径方向
- 《移动终端用户交互工程》研究生课小结一:如何在计算机方向开设一门女生积极学习的课
- js实现回放拖拽轨迹从过程上进行分析
- Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果