Тайные значения приложения Google IO 2013

Я пытаюсь использовать SVGTileProvider, который находится в разделе Приложение Google IO 2013. Я не могу точно понять, как разместить изображение на карте 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)));
}

person Sababado    schedule 16.01.2014    source источник
comment
Это должно быть Мадрид, Испания? Почему они не имеют длинных значений?   -  person IAmGroot    schedule 16.01.2014
comment
Нет. В настоящее время я пытаюсь отобразить изображение над зданием в Атланте, штат Джорджия. После этого у меня будет несколько других мест.   -  person Sababado    schedule 16.01.2014
comment
Я неправильно набрал, но это все равно не атланта. Однако Google использует латы с такой точностью. он превратил 40,98 в длинное значение   -  person IAmGroot    schedule 16.01.2014
comment
В своем вопросе я сказал, что это НЕ значения широты/долготы.   -  person Sababado    schedule 16.01.2014


Ответы (2)


Оказывается, это мировые координаты.

Вот некоторый код Java для перевода из lat/long в x/y.

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);
}
person Sababado    schedule 16.01.2014
comment
Это нужно отметить как правильный ответ! Спасибо @Sababado :-) - person saguinav; 27.07.2014
comment
Обширный и исчерпывающий поиск Google. Я не мог честно сказать, где я нашел их сейчас. Вероятно, где-то, когда я искал, как преобразовать мировые координаты в Java - person Sababado; 19.02.2019

См. класс TileProjection, который я разместил в ответе на это ТАК вопрос. Если Сабабадо прав, что числа являются WorldCoordinates, то этот класс должен помочь вам преобразовать их. Вы также можете найти формулы здесь.

person user2808624    schedule 17.01.2014