Клуб API Карт

Вопросы по событию обновление геометрии

Пост в архиве.

Поясню на примере:

http://jsfiddle.net/GSJVj/3/

 

Есть некий геобъект с привязанным к его координатам html контентом,

неообходимо при смене координат обьекта перемещать и контент.

 

И тут у меня в возникает такая проблема: Если попробовать быстро перетаскивать круг, то в медленном браузере события изменения геометрии pixelgeometrychange как бы запаздывают и не успевают за положением круга, квадратик движется асинхронно с перемещениями центра круга = (

 

Такая проблема возникает только при быстрых перемещениях в медленных браузерах.

 

В стандартном редакторе многоугольника такой проблемы не возникает, там при включенном редактировании и резком перетаскивании обьекта квадратики всегда отображаются на своем месте (в вершинах многоугольника) http://jsfiddle.net/p32G7/1/

 

Что тут делать: необходимо слушать какое-то другое событие, связанное непосредственно с отображением обьекта?

Или что-то другое ?

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

Попробуйте слушать событие drag

Дмитрий Сухоносов
28 января 2016, 00:35

Но я не использую dragging у себя в коде, перетаскивание включено только в примере для демонстрации проблемы.

 

У меня перетаскивание обьектов осуществляется только за вершины-квадратики, я слушаю события мыши на вершинах и перемещаю объект с помощью setCoordinates().

Насколько я вижу в медленных браузерах метки не отстают, а опережают движение круга. Происходит это потому, что графика у нас рисуется несколько медленее чем DOM.

Специального события для синхронизации нет. В редакторе это синхронизировано через requestAnimationFrame API или таймаут 25мс, для браузеров, которые этот API не поддерживают.

 

Дмитрий Сухоносов
28 января 2016, 00:35

Спасибо

А можете посоветовать какой-нибудь workaround?

Ну вобщем делать то же самое. Менять css по RAF или таймауту.

Дмитрий Сухоносов
28 января 2016, 00:35

Набросал прототип, хорошо получилось, спасибо!

http://jsfiddle.net/GSJVj/4/