Deff, сделал но теперь еще хуже
|
пока сделал по быстро только на увлечение, но все равно не работает правильно=(
var zLeft = 0; var zTop = 0; function setNewPosition (zoom, width, height) { zLeft += width / zooming.width() == 1 ? 0 : width / zooming.width(); zTop += height / zooming.height() == 1 ? 0 : height / zooming.height() ; var i = 0; points.each(function(index, element) { var left = posLeft[i]; var top = posTop[i]; if (zoom) { left *= zLeft; top *= zTop; } else { left /= zooming.width() / width; top /= zooming.height() / height; } i++; $(this).css({ left: Math.round(left) +'px', top: Math.round(top) +'px' }); }); } |
cyber,
А ссылка та же ? *Посмотреть ? (Думаю Что Аналогичная феня и в карте (тож набег округлений) - в итоге и раздрай.... (Если прошлый раз оно совпадало по идеалогии с картой, то основная погрешность была ток при самых мелких масштабах |
|
Потом у тьву всё равно нет констант
Должно быть так left = Left00*zoom Left00 - это начальное смещениие от лево приведенной к максимальному масштабу карты (константа - не меняемая после установки точки) zoom - это отношение текущей карты к максимальной величине карты |
константа, я с зумом затупил
|
эм...
смещается на столька же function setNewPosition (zoom, nWidth, nHeight) { var i = 0; points.each(function(index, element) { var left = posLeft[i]; var top = posTop[i]; if (zoom) { left *= nWidth / width; top *= nHeight / height; } else { left /= zooming.width() / width; top /= zooming.height() / height; } i++; $(this).css({ left: Math.round(left) +'px', top: Math.round(top) +'px' }); }); } как и тут function setNewPosition (zoom, width, height) { points.each(function(index, element) { var left = parseInt($(this).css('left')); var top = parseInt($(this).css('top')); if (zoom) { left *= width / zooming.width(); top *= height / zooming.height(); } else { left /= zooming.width() / width; top /= zooming.height() / height; } $(this).css({ left: Math.round(left) +'px', top: Math.round(top) +'px' }); }); } |
Deff, вариантов больше нет?
|
cyber,
Нун смотреть карту - наверняка и там где-то есть наращивание погрешностей округления Гы - перезагрузил какрту - поехали Ксать - посколь растояние между ними не бегает ( между ними двумя ) Есть предположение - что сейчас ты Left берешь не от той оболочки Я Думал - что дроп ты делаешь со внешней - а масштаб со внутренней - это так ? или наоборот ? Т.е left и тоp предполагались от левого верхнего угла карты |
Deff,дело не в округлениях.
вот блок <div class="map" id="map"> <div id="wrapper" class="wrapper"> <div id="zooming" class="zooming-map"> <img src="general.jpg"/> <a href="#" class="point_on_map" style="left:20%; top:30%;"></a> <a href="#" class="point_on_map" style="left: 427px; top: 356px; "></a> <a href="#" class="point_on_map" style="left:1000px; top:800px;"></a> </div> </div> </div> при вызове скрипта я устанавливаю все точкам значение в px function setPointPosition(){ points.each(function() { var coords = $(this).offset(); $(this).css({ left: coords.left - coord_elem.left +'px', top: coords.top - coord_elem.top +'px' }); }); } относительно текущего блока / B coords координаты <div class="map" id="map"> |
Часовой пояс GMT +3, время: 22:10. |