已知A,B两点的经纬度,求A点相对于B点的方向;怎么算,坐等

解决方案 »

  1.   


    例如,A正对着B的时候,那方向就不用求了。这个问题关键就是A的朝向问题。总要确定一个方向,A面向那个方向,然后才能确定B相对A的方向。反过来求A相对B的方向也一样
      

  2.   

    你求A点相对于B点的方向,那么就等于说你把B点看做原点,然后做成一个坐标图,然后比较A点和B点的x,y坐标大小就知道方向了吧,例如A.x > B.x 且A.y < B.y,那么就是说A点在B点右下啊,那么就是东南面吧应该这样理解吧
      

  3.   

    /**
     * 计算两点间的正北方向
     * @param lon1 点1
     * @param lat1
     * @param lon2 点2
     * @param lat2
     * @return
     */
    public double getYawByPoints(double lon1,double lat1,double lon2,double lat2)
    {
    double yaw = 0;
    double dlon = lon2-lon1;
    double dlat = lat2-lat1;
    double dMin = 0.00001;
    if(Math.abs(dlon)<dMin)
    {
    if(dlat>dMin)
        yaw = 0;
    else if(dlat<dMin)
    yaw = 180;
    return yaw;
    }
    if(Math.abs(dlat)<dMin)
    {
    if(dlon>dMin)
        yaw = 90;
    else if(dlon<dMin)
    yaw = 270;
    return yaw;
    }
    double kk = (dlon)/(dlat);
    if(dlon>dMin&&dlat>dMin)
    {
    yaw = (Math.atan(kk)*180/Math.PI);
    }
    else if(dlon>dMin&&dlat<dMin)
    {
    yaw = (Math.atan(kk)*180/Math.PI)+180;
    }
    else if(dlon<dMin&&dlat<dMin)
    {
    yaw = (Math.atan(kk)*180/Math.PI)+180;
    }
    else 
    {
    yaw = (Math.atan(kk)*180/Math.PI)+360;
    }

    return yaw;
    }