Клуб API Карт

как узнать номер тайла по геоточке?

sairi-na-tenshi
27 января 2009, 18:11

сабж

12 комментариев
Подписаться на комментарии к посту
у тайла 2 номера, по Х и по У. и оба этих номера зависят от зума(масштаба). алгоритм вычисления должен быть не сложным...
я понимаю, что он не сложный, но хотелось бы апишную функцию.
еслия я не ошибаюсь, то нужно смотреть в сторону YMaps.Converter.coordinatesToMapPixels(geoPoint), где geoPoint точка в тайле.
к номеру тайла это совершенно не приближает...
В настоящее время никак. А зачем Вам нужны координаты тайла?
чтобы подгружать объекты из текущей области видимости
Про адресацию тайлов Вы можете почитать в разделе Координатные системы. Реализовывать механизм поиска номера тайла Вам придется самостоятельно.
можно, хотябы, конкретную фолмулу, по которой вы делаете преобразование меркатора?
По проекции Меркаторе написано в википедии.
которая формула из приведённых там используется у вас и какие значения констант вы туда подставляете?
короче, нашёл
function _geoToMercator(n) {
    var l = n.getLng() * Math.PI / 180, u = O(n.getLat(), -90, 90) * Math.PI / 180, t = 6378137, s = 0.0818191908426, m = s * Math.sin(u);
    var o = Math.tan(Math.PI / 4 + u / 2) || 1e-13, r = Math.pow(Math.tan(Math.PI / 4 + Math.asin(m) / 2), s), q = o / r;
    return new YMaps.Point(Math.round(t * l), Math.round(t * Math.log(q)));
}

function _mercatorToTiles(e) {
    return new YMaps.Point(Math.round((20037508.342789 + e.x) * 53.5865938), Math.round((20037508.342789 - e.y) * 53.5865938));
}
правильно ли я понял, что у полученных чисел мне нужно обрезать лишние биты с соответствии с зумом и получатся те самые координаты тайла?