Клуб API Карт

Номер тайла по координатам

sergei.murko
29 ноября 2013, 13:18

Как вычислить номер тайла зависящий от zoom и координат?

12 комментариев
Подписаться на комментарии к посту

var coords = [33, 56],

     globalPixelCoordinates = myMap.options.get('projection').toGlobalPixels(coords, zoom),

    tileNumber = [Math.floor(globalPixelCoordinates[0] / 256), Math.floor(globalPixelCoordinates[1] / 256)];

   

а формулой) я пишу прорисовку тайлов на php

Вот тут есть реализация аналогичной задачи https://github.com/twirl/hsTiler/blob/master/include/Point.class.php

Меньше всего люблю ковырятся в чужом коде):-)

Но серавно спасибо)

Вы же просили код?

1. Перевести гео координаты в пиксельные на нужном зуме.

2. Поделить на размер тайла.

1)Теперь другой вопрос! Как получить обратные координаты верхнего левого угла и правого нижнего угла для этого тайла?)

2)нашел код на php для перевода в пиксельные координаты? верен ли код?

    function lonToX($lon) {

        $offset = 256 << ($_GET['z']-1);

        $x = round($offset + ($offset * $lon / 180));

        return $x;

    }

 

    function latToY($lat) {

        $offset = 256 << ($_GET['z']-1);

        $y = round($offset - $offset/pi() * log((1 + sin($lat * pi() / 180)) / (1 - sin($lat * pi() / 180))) / 2);

        return $y;

    }

Перевести пиксельные координаты и они же +256 обратно в гео.

Какие проблемы?

Тут вся суть в проекции используемой.

подредактировал вопрос)

fromGeoPoint возвращает неправильно Y координату

:-)А как получить геогрграфические ккординаты, левого верхнего угла?

Географические и правого нижнего)