计算地图上2个起点终点的夹角

  1. 确定起点(武汉)坐标,地址解析或者坐标拾取,这里演示使用百度的坐标拾取系统

    计算地图上2个起点终点的夹角

  2. 确定终点(北京)坐标

    计算地图上2个起点终点的夹角

  3. 调用函数,获取武汉到北京的角度(以武汉的左侧纬线为0度线)

    echo getJd(‘114.302378,30.635141′,’116.399669,39.908958’);

    //返回经纬度偏移量

    function getJd($lnglat1,$lnglat2){

    $k1 = explode(‘,’,$lnglat2)[0]-explode(‘,’,$lnglat1)[0];   //经度差

    $k2 = explode(‘,’,$lnglat2)[1]-explode(‘,’,$lnglat1)[1];   //纬度差

    if( 0 == $k1){  //经度重合

    if($k2>0){  //纬度为正

    $angle = 90;

    }

    else if( $k2

    $angle = 270;

    }

    else if( $k2 == 0){

    $angle = 0;

    }

    }else if( 0 == $k2){

    if($k1>0){

    $angle = 180;

    }

    else if( $k1

    $angle = 0;

    }

    }else{

    $k=$k2/$k1;

    if($k2>0){

    if($k1>0){

    $angle = sprintf (“%.2f”,180*atan($k)/M_PI);

    $angle = 180 – $angle;  //东偏北 $angle 度方向   这里相当于把武汉的左侧的纬线作为0度线,右侧纬线作为180度线

    }else if($k1

    $angle = sprintf (“%.2f”,180*atan(-$k)/M_PI);  //西偏北 $angle 度方向

    }

    }else if($k2

    if($k1

    $angle = sprintf (“%.2f”,180*atan($k)/M_PI);

    $angle = 360 – $angle;   //西偏南 $angle 度方向

    }

    else if($k1>0){

    $angle = sprintf (“%.2f”,180*atan($k)/M_PI);

    $angle = 180 – $angle;   //东偏南 $angle 度方向

    }

    }

    }

    return $angle;

    }

    计算地图上2个起点终点的夹角

  4. 调用函数,获取合肥到太原的角度(以合肥的左侧纬线为0度线)

    计算地图上2个起点终点的夹角

  5. 角度互减取绝对值,结果就是两条线路的夹角

    echo abs(66.02-102.49);

文章来源于互联网:计算地图上2个起点终点的夹角

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发