我会使用标准地图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