我应该使用哪些Android API?简单的地图应用

时间:2011-04-28 19:32:48

标签: java android google-maps-api-3

我会使用标准地图api吗?我问的原因是我希望地图是我在校园的Photoshop中制作的自定义图像。我发现另一所大学的某个人做了类似的事。我怎么做这样的东西?

http://s3.appbrain.com/screen?id=2110362890445967243&i=1

这样的事情必须离线吗?它还能提供您当前的地理位置吗?谢谢。

2 个答案:

答案 0 :(得分:3)

我过去做过这件事,并不太难。

忘记Map API。您只需要在地图上准确缩放所需区域的图像。

您只需要四个角的经度和纬度以及图像的宽度和高度。一旦你有了这个,你可以做一些相对简单的数学运算将GPS坐标转换为图像上的X,Y点。

我用芝加哥格兰特公园的卡通形象为2010年的Android Lollapalooza应用程序做了这个。我的问题实际上稍微困难一点,因为地图被垂直挤压并略微移动了几度,所以我的数学增加了适应性为了那个原因。如果你只是创造一个直接的头顶射击,它应该很容易。

这是我用来将长/拉值转换为点的效用函数。它并不完全是您所需要的,因为它具有与我正在使用的图像相关联的特定值,但可能会让您朝着正确的方向前进。

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 :(得分:1)