Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将横向/纵向坐标转换为像素坐标_Java_Android_Maps_Scale_Pixel - Fatal编程技术网

Java 将横向/纵向坐标转换为像素坐标

Java 将横向/纵向坐标转换为像素坐标,java,android,maps,scale,pixel,Java,Android,Maps,Scale,Pixel,我正在创建Android应用程序,我需要在位图上绘制多段线。我从坐标上得到了很多东西 X: Y: 57.567177, 25.383375 57.567391, 25.384218 57.568717, 25.382321 57.568159, 25.382033 然后我需要把它们转换成像素坐标。到目前为止,我所做的是用这段代码在px中的两点之间转换长度 public double KoordToMeters(double lat1, d

我正在创建Android应用程序,我需要在位图上绘制多段线。我从坐标上得到了很多东西

    X:         Y:
    57.567177, 25.383375
    57.567391, 25.384218
    57.568717, 25.382321
    57.568159, 25.382033
然后我需要把它们转换成像素坐标。到目前为止,我所做的是用这段代码在px中的两点之间转换长度

public double KoordToMeters(double lat1, double lon1, double lat2, double lon2){  // generally used geo measurement function
    double R = 6378.137; // Radius of earth in KM
    double dLat = lat2 * Math.PI / 180 - lat1 * Math.PI / 180;
    double dLon = lon2 * Math.PI / 180 - lon1 * Math.PI / 180;
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
                    Math.sin(dLon/2) * Math.sin(dLon/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double d = R * c;
    return d * 1000; // meters
}
public double MeterstoPx(double Meters, int scale){ //Scale 10000
    double Px;
    Meters = Meters / scale;

    Px = Meters / 0.0002645833; //Got this number as 1m=0.0002645833px

    return Px;
}
我不确定这是否有必要获得像素坐标。我使用的是10000刻度,这就是为什么我使用米=米/刻度