2011-04-28 68 views

回答

3

我已經在過去做到了這一點,這不是太硬。

忘記地圖API。您只需要在地圖上精確縮放您想要的區域的圖像。

您只需要四個角的經度和緯度以及圖像的寬度和高度。一旦你有了,你可以做一些相對簡單的數學運算,將手機的GPS座標轉換爲圖像上的X,Y點。

我在芝加哥的格蘭特公園爲2010年的Android Lollapalooza應用程序製作了一個卡通形象。我的問題實際上稍微有些困難,因爲地圖被垂直壓扁並略微偏移了幾度,所以我的數學增加了適應這一點。如果你只是創造一個直接的開銷,它應該很容易。

這裏是我用來從Long/Lat值轉換爲點的實用程序函數。它不會完全符合您的需求,因爲它具有與我使用的圖像相關的特定值,但可能會使您朝着正確的方向前進。

public static PointF GPSToMap(double latitude, double longitude, 
     double minLat, double minLon, double maxLat, double maxLon, 
     long width, long height, String xExpr, String yExpr) 
{ 
    double numerator; 
    double denominator; 

    numerator = latitude - minLat; 
    denominator = maxLat - minLat; 
    double x = width - ((numerator/denominator*width)); 
    numerator = longitude - minLon; 
    denominator = maxLon - minLon; 
    double y = height - ((numerator/denominator*height)); 

    Double dblX = new Double(x+(y*0.434026)-((x-100)*0.180)); 
    Double dblY = new Double(y*0.99); 

    MathEval math = new MathEval(); 

    dblY += math.evaluate(yExpr); //-40 
    dblX += math.evaluate(xExpr); //-15 
    return new PointF(dblX.floatValue(), dblY.floatValue()); 
} 
+1

只是想我會添加,xExpr和yExpr其中字符串值由數學公式組成。這樣做,所以一旦我到了格蘭特公園,我就可以在公園裏散步,並且讀取GPS讀數,並且在飛行中調整我的數學公式,而無需重新部署應用程序。 – mp2526 2011-04-28 21:05:12

+3

MathEval類位於此處www.softwaremonkey.org/Code/src/MathEval.java – mp2526 2011-04-28 21:12:24

+0

感謝您分享該代碼,它肯定會幫助人們。 – 2011-04-30 00:12:20

相關問題