我會使用標準地圖API嗎?我問的原因是我希望地圖是我在校園的photoshop中製作的自定義圖像。我發現另一所大學的某個人做了類似的事情。我會如何做出這樣的事情?我應該使用哪些Android API?簡單的地圖應用程序
http://s3.appbrain.com/screen?id=2110362890445967243&i=1
將這樣的事情必須是離線?它還能給你當前的地理位置嗎?謝謝。
我會使用標準地圖API嗎?我問的原因是我希望地圖是我在校園的photoshop中製作的自定義圖像。我發現另一所大學的某個人做了類似的事情。我會如何做出這樣的事情?我應該使用哪些Android API?簡單的地圖應用程序
http://s3.appbrain.com/screen?id=2110362890445967243&i=1
將這樣的事情必須是離線?它還能給你當前的地理位置嗎?謝謝。
我已經在過去做到了這一點,這不是太硬。
忘記地圖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());
}
只是想我會添加,xExpr和yExpr其中字符串值由數學公式組成。這樣做,所以一旦我到了格蘭特公園,我就可以在公園裏散步,並且讀取GPS讀數,並且在飛行中調整我的數學公式,而無需重新部署應用程序。 – mp2526 2011-04-28 21:05:12
MathEval類位於此處www.softwaremonkey.org/Code/src/MathEval.java – mp2526 2011-04-28 21:12:24
感謝您分享該代碼,它肯定會幫助人們。 – 2011-04-30 00:12:20