我正在制作一个 Android 应用程序来计算 GPS 格式的数学。
例子:
给定
N 48°44.(30x4) E 019°08.[(13x31)+16]
应用程序计算它,结果是:
N 48°44.120 E 019°08.419
是否有可能做到这一点?
我搜索了插件和解决方案,但这些都只是数学字符串,如“14 + 6”。
我假设您正在使用 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);
当然,您需要改进上述内容以使其适合您的项目。如果这没有帮助,请提供更多细节,我会看看我是否能想到其他可能适合您的需求的东西。
你不能只substring
搜索整个内容并搜索括号中的表达式吗?那么这只是一个简单的计算问题。如果我正确理解了这个问题。gps数据看起来不像普通的表达式,所以不能math()
直接appy。