3

Google IO 2013 appSVGTileProviderにあるを利用しようとしています。ただし、Googleマップに画像を配置する方法が正確にはわかりません。クラスのこのセクションに絞り込みました。これらは緯度/経度座標ではありませんが、どういうわけか緯度/経度座標から来ている必要があります。これらが何であるか、またはどこから来たのか誰か知っていますか?

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

これらはワールド座標であることが判明しました。

緯度/経度から 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 を参照してください。数値が WorldCoordinates であるという Sababado が正しければ、このクラスはそれらを変換するのに役立ちます。計算式はこちらでもご覧いただけます。

于 2014-01-17T16:38:51.983 に答える