3

我正在尝试使用Google IO 2013 appSVGTileProvider中的内容。不过,我不知道如何在谷歌地图上定位图像。我已将其范围缩小到课程的这一部分。这些不是纬度/经度坐标,但不知何故,它们必须来自经度/纬度坐标。有谁知道这些是什么或它们来自哪里?

mBaseMatrix.setPolyToPoly(
    new float[]{
        0, 0,
        limits.width(), 0,
        limits.width(), limits.height()
    }, 0,
    new float[]{
        40.95635986328125f, 98.94217824936158f,
        40.95730018615723f, 98.94123077396628f,
        40.95791244506836f, 98.94186019897214f
    }, 0, 3);

更新

第一组神秘数字大致转换为纬度/经度 37.783887,-122.405107。

更新 2

这些方法帮助我将纬度转换为 y 值,反之亦然。我怎样才能为 X 和经度做到这一点?

public static double y2lat(double aY) {
    return Math.toDegrees(2 * Math.atan(Math.exp(Math.toRadians(aY))) - Math.PI / 2);
}
public static double lat2y(double aLat) {
    return Math.toDegrees(Math.log(Math.tan(Math.PI / 4 + Math.toRadians(aLat) / 2)));
}
4

2 回答 2

6

原来这些是世界坐标。

这是一些从 lat/long 转换为 x/y 的 java 代码。

public static float lat2y(double aLat) {
    return (float) (((1 - Math.log(Math.tan(aLat * Math.PI / 180) + 1 / Math.cos(aLat * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2, 0)) * 256);
}
public static float lon2x(double lon) {
    return (float) ((lon + 180f) / 360f * 256f);
}
于 2014-01-16T22:35:33.543 回答
1

请参阅我在此 SO问题的答案中发布的 TileProjection 类。如果 Sababado 是正确的,数字是世界坐标,那么这个类应该可以帮助你转换它们。您也可以在此处找到公式。

于 2014-01-17T16:38:51.983 回答