0

我正在制作一个 Android 应用程序来计算 GPS 格式的数学。

例子:

给定

N 48°44.(30x4) E 019°08.[(13x31)+16]

应用程序计算它,结果是:

N 48°44.120 E 019°08.419

是否有可能做到这一点?

我搜索了插件和解决方案,但这些都只是数学字符串,如“14 + 6”。

4

2 回答 2

1

我假设您正在使用 Java 工作,因为它在您的问题中被标记。

您可以为您的 GPS 坐标创建一个新的公共类,并将坐标的实际值存储在最低分区中,根据您的示例,该值似乎是分钟或秒。这允许您以任何您希望的精度将值存储为 int 或 double。然后,您可以创建一组私有和公共方法来完成您的数学运算和其他方法,以便以适当的方式显示您的值:

public class GPSCoordinate {

    private double verticalcoord;
    private double horizontalcoord;

    //Constructors
    GPSCoordinate(){
        setVertical(0);
        setHorizontal(0);
    }

    GPSCoordinate(double vert, double horiz){
        setVertical(vert);
        setHorizontal(horiz);
    }

    //Display methods
    public String verticalString(){
        return ((int)verticalcoord / 60) + "°" + (verticalcoord - ((int)verticalcoord / 60) *60);
    }

    public String horizontalString(){
        return ((int)horizontalcoord / 60) + "°" + (horizontalcoord - ((int)horizontalcoord / 60) *60);
    }

    //Setting Methods
    public void setVertical(double x){
        this.verticalcoord = x;
    }

    public void setHorizontal(double x){
        this.horizontalcoord = x;
    }

    //Math Methods
    public void addMinutesVertical(double x){
        this.verticalcoord += x;
    }
}

这将允许您在主代码中使用给定的 GPS 坐标启动一个实例,然后您可以在其上调用您的数学函数。

GPSCoordinate coord1 = new GPSCoordinate(567.23, 245);
coord1.addMinutesVertical(50);
coord1.otherMathFunction(50 * 30);

当然,您需要改进上述内容以使其适合您的项目。如果这没有帮助,请提供更多细节,我会看看我是否能想到其他可能适合您的需求的东西。

于 2013-07-01T18:46:47.390 回答
0

你不能只substring搜索整个内容并搜索括号中的表达式吗?那么这只是一个简单的计算问题。如果我正确理解了这个问题。gps数据看起来不像普通的表达式,所以不能math()直接appy。

于 2013-07-01T15:13:44.763 回答