да я вообщем и не запутался..
просто я не пойму что с точками. а на счет margin и padding , их там вообще нет и они обнолены |
поправил пару багов, но всеравно эти точки не стоят на месте .
Уже не знаю что с ними делать .... http://cyberua.16mb.com/files/zoom.html |
cyber,
1. Для того чтобы они стояли - Вам необходимо работать не с элементов с id='img' а элементом id='wrapper' и размеры при зуме и cмещение при drag and менять его а карту ставим таким кодом <img id='img' src='img/general.jpg' width=100% /> и позиция у него не задана или статис, т. есть элемент вклеен во wrapper тогда эти <div class="point_on_map"></div> намертво спозиционированы будут к wrapper у <div id="wrapper"> position: удобная Вам и отличная от static или по умолчанию |
хм..
ну это уже ближе к правде, но все равно точки смещаются.. http://cyberua.16mb.com/files/zoom.html П.с уже дошел до того что пытался понять как у гугла это работает , но чет тяжело читается их код=) |
пробовал рассчитать на сколько процентов увеличивается изображение и на столько % сместить точку (относительно начальной позиции) , почти получилось но не пойму откуда погрешность в пару px и за этой погрешности (2-3 пикселя) видно что точка движется
|
Цитата:
И стиль чуть поправь .map a { position:absolute; display:inline:block; } |
Цитата:
они меняются при увеличение, и не совсем понял про % |
cyber,
Если left и top изначально пересчитать к размерам wrapper - то можно ставить left:10%; top:13%;(к примеру) и забыть про правку при зумме но это достоверно для .map a { position:absolute; display:inline:block; } |
cyber,
Ксать заметил - что у тьву зумм на пойнтеры - в обратную строну - при уменьшениии карты - вроде как смещение увеличиваешь (на zoom нужно умножать координату (и при увеличении - тоже - хотя это при увеличении правильно Мож ты где абсолютное значение берешь ? Заметь - при увеличении карты - точки прилеплены |
хм.. с % идеально, если подойдет так и сотавлю
П.с самое смешно что я на сам скрипт потратил 4 часа , с точками сижу 3й день=) спасибо что помогаешь =) |
Цитата:
|
да ты прав, я забыл у точек для топ отнять внешние отступ , на увеличение работает, а вот с уменьшением щас буду разбиратся
|
кстати мой вариант теперь тоже работает http://javascript.ru/forum/events/30...tml#post196383
|
Цитата:
- Ксать чо те просто не вычислять отношение текущей ширины wrapper к самой изначальной исходной - это и будет реальный zoom - на который и нужно домножить координаты точек ? (не нун уменьшение - увеличение тестить |
нет теперь нужно , я не занимался уменьшение пока не закончил увелечение , а теперь буду что то думать с уменьшением
|
cyber,
дык выкинуть проще - те нун ток отношение найти, - всё одно ти точки делаешь после зума карты - воть там, в зуме карты и определить отношение |
хм, не работает, делал так
текущий размер / исходный размер |
cyber,
Исходный - это статический самый начальный - он константа вот бьл изначально 100px текущий стал 50 = zoom у тебя 0.5 текущий стал 70 zoom у тебя 0.7 текущий стал 200 zoom у тебя 2.0 координаты точек изменяцо в помножая на zoom тоже начальные исходные координаты Которые при ширине 100 |
пока в качестве константы использую размеры заданные в стилях
.map .wrapper{ width:1600px; height:1000px; cursor: move; } |
Цитата:
|
да но вот только не правильно работает
последняя функция в файле zoom.js |
Цитата:
|
вроде правильно
|
cyber,
Мне кажецо что ты и top1 - правишь выведи как произведение двух чисел top1должен быть постоянным top1 это начальное смещение по высоте без зума |
если ты про константу то править ее некак
function resize_zoom () { var top, left, posTop, posLeft; posTop = parseInt($(this).css('top')); posLeft = parseInt($(this).css('left')); /* get(Height/Width) размер картинки после увлечения step.height на сколько увеличить высоту */ top = getHeight / 1000; left = getWidth / 1600; alert(getWidth) // alert('left='+left+' top=' +top) return { top: Math.round(top * posTop), left: Math.round(left * posLeft), point: this } } она пока числом задана |
Цитата:
top: Math.round(top * posTop), - воть это - ерунда ========================================== у тьву есть начальная позиция - вне функции! вот вынеси эту штуку posTop = parseInt($(this).css('top')); posLeft = parseInt($(this).css('left')); за пределы функции! для каждой точки (там не $(this). а реальный селектор поставь (у тьву эта позиция сейчас -не константа |
я кажется понял что ты имееш в виду, начальные значение (top/left) нужно умножать на зум и меняется только зум?
|
Цитата:
|
УРА работает, http://cyberua.16mb.com/files/zoom.html
СПАСИБО!!! |
cyber,
:) Дык если перевести left и top в % изначально - при установке пойнтеров - то и этих операций не нужно (проценты допускают дробную часть) типо 87.69% |
Цитата:
и еще раз спасибо=) |
Часовой пояс GMT +3, время: 06:25. |