2013-07-01 103 views
0

我正在製作Android應用程序來計算GPS格式的數學。以GPS格式計算數學

例子:

鑑於

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

的程序計算它,結果是:

N 48°44.120 E 019°08.419

是否有可能做到這一點?

我搜索了插件和解決方案,但它只是用於數學字符串,如「14 + 6」。

回答

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); 

當然,您將需要對上述內容進行改進以使其適合您的項目。如果這沒有幫助,請提供更多細節,我會看看我是否可以考慮其他任何可能符合您要求的內容。

+0

哇,thanx,這是更好的方式做到這一點,我使用它,thanx ... – GAMELASTER

0

你不能只是substring整個事情,並搜索括號中的表達式?那麼這只是一個簡單的計算問題。如果我正確地理解了這個問題。 GPS數據看起來不像普通表達式,所以您不能直接應用math()

+0

嗯,但數學表達式不能只在括號內,位置可能與例子[N 32 + 42°8 + 10.55等]中的位置不一樣。但是,我現在知道它是怎麼做的,我去測試它..如果它不起作用,我回複評論.. Thanx的答覆[與你回覆我的想法...] – GAMELASTER

+0

是的它可以不同。如果你可以給出可能的例子,我可能可以爲'substr'表達式找出一個例子公式。 – g00dy

+0

Verry大哥,與你張貼了一個想法[也有你寫的],它的工作完美.. Verry大thanx :) – GAMELASTER