Клуб API Карт

Формула расчета глобальных пиксельных координат и координат центра карты

m-vshivkova67
20 января 2014, 12:48

Здравствуйте, интересует по какой формуле можно высчитать глобальные писельные координаты, зная координаты клика по ней? аналогично и для получения myMap.getGlobalPixelCenter(); Не подскажите?

7 комментариев

Я так понимаю, что глобальный пиксельные координаты, отталкиваются от формулы: 
глобал_пикс_коорд = глоб_писк_центр + смещение

где  глоб_писк_центр - глобальный пиксельный центр достать можно, то принимается за смещение? какая величина? 

думалось, что
смещение = (глоб_пикс_центр + размер_дива_карты/2) /256* pow(2,(23-zoom))
где ошибка?  

Глобальный пиксельный центр и есть текущий центр карты.

это да, я понимаю, меня интересует как вычислить глобальную пиксельную координату

Тогда ошибка в 256*pow(2,(23-zoom))

Пиксели всегда 

1. На текущем зуме

2. pow(2,8+zoom)

а почему имено 8+zoom? 

Мой код такой

glPixCenter = map.getGlobalPixelCenter(); // [155387.16352403397, 91429.96006117242]

size = map.getSize(); // [700,300]

zoom = map.getZoom(); // 10

var dx = [

            Math.floor((e.pageX - size[0])/256*pow(2,8-zoom)),

            Math.floor((e.pageY - size[1])/256*pow(2,8-zoom))

 

        ]; // e.pageX = 318, e.pageY = 485

Вышло 

glPixCoord = [glPixCenter[0] + dx[0],

                    gPixCenter[1] + dx[1]

]; // [-235780.83647596603; 280869.96006117243]

а нужно [155200.16352403397, 91435.96006117242]

 

Все дело в том что зум, деления и умножения в этой формуле отсуствуют. Вообще.

А офсет карты на странице - присуствует.

glPixCenter[0] + e.pageX - size[0]/2 - $(mapDiv).offset().top 

интересно...То, что надо!