【问题标题】:Google IO 2013 App Mystery ValuesGoogle IO 2013 应用神秘价值
【发布时间】:2014-02-05 16:51:26
【问题描述】:

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

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)));
}

【问题讨论】:

  • 假设是西班牙马德里吗?为什么它们不是 lat long 值?
  • 没有。我目前正在尝试在佐治亚州亚特兰大的一座建筑物上显示图像。在那之后,我将有几个其他的位置。
  • 我打错了,但它仍然不是亚特兰大。不过,谷歌确实需要 Lat longs 来达到这种准确性。它把 40.98 变成了一个长值
  • 我在我的问题中说这些不是纬度/经度值。

标签: android google-maps-android-api-2 tile googleio


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    原来这些是世界坐标。

    这里是一些从 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);
    }
    

    【讨论】:

    • 这应该被标记为正确答案!谢谢@Sababado :-)
    • 广泛而详尽的 Google 搜索。我不能诚实地说我现在在哪里找到它们。当我查找如何在 Java 中转换世界坐标时,可能在某个地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2019-12-01
    • 2021-12-11
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多