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, время: 10:42. |