Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79

фиксация точек на картинке при зуме

30.08.2012, 22:01. Показов 2801. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сделал скрипт карты с drag and drop и зумом, а теперь нужно зафиксировать точки на ней я пытался сделать так
текущая позиция * зум
но при наростание зума точки потихоньку уежают=(
как можно их зафиксировать что бы они не уежали?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.08.2012, 22:01
Ответы с готовыми решениями:

При зуме фигура перекрывается границами виджета
Здравствуйте. Название темы звучит как абсурд. Так ведь и должно быть при достаточно высоком увеличении фигуры. Но есть одно но -...

Android: баг с отображанием пространства под страницей при минимальном зуме
Всем доброго утречка :) При тестировании сайта (точнее, своего скина под Drupal 7) на разных устройствах возникла проблема: на...

Как сделать, чтобы структура страницы и её контент не изменяли своего местоположения при зуме в окне браузера?
Доброго времени суток, форумчане! При вёрстке сайта столкнулся с такой проблемой: при изменении зума браузера блоки с размещённым внутри...

7
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
30.08.2012, 23:01
__proto__, всё очень просто - тут даже не математика, а простейшая арифметика.

Пропорции в школе проходили?
Вот они здесь и "рулят".



Вам надо запоминать не y, а соотношение y / H
И надо запоминать не x, а соотношение x / W

Тогда новые y1 и x1 у вас легко получатся из этих соотношений:

y1 = (y / H) * H1
x1 = (x / W) * W1
0
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79
30.08.2012, 23:28  [ТС]
я пробывал этот вариант, смещается на такое же расстояние пиксель в пиксель

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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'  
     }); 
     
});
        
    
}
на картинке кругом обозначенно место где должна быть точка
Миниатюры
фиксация точек на картинке при зуме  
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
30.08.2012, 23:37
__proto__, увы, "костылями" никогда не пользовался, их тарабарского "языка" не знаю, помочь не смогу.
0
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79
31.08.2012, 21:58  [ТС]
если честно сам ненавижу эту хренатень, писал всегда на чистом js но этот скрипт друг попросил на jquery, за то время что пишу на нем раз 5 уже проклял его=)
старый добрый js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      var points = [];// массив с точками
      var point;
      
      for (var i = points.length;i--;) {
      
      point = points[i];
      var left = parseInt(point.style.left);
      var top = parseInt(point.style.top);
      
  if (zoom) {
          
   left *= width / zooming.offsetWidth;
   top *= height / zooming.offsetHeight;
 
       } else {
         
    left /= zooming.offsetWidth / width;
    top /= zooming.offsetHeight / height;  
      
    }
    
     point.style.left = left +'px';
     point.style.top = top +'px';  
      
     }
HTML5
1
2
3
4
5
6
<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>
Добавлено через 41 минуту
вот пытался понять где то я сделал лишний отступ или нет, написал тестовый пример
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE HTML>
<html>
  <head> 
  <style>
    #wrapper {
      position:absolute;
    }
    
    #wrapper > a{
      top:50px;
      left:70px;
      width:30px;
      height:30px;
      background-color:red;
      position:absolute;
      border-radius:50%;
    
    }
    
    </style>
  </head>
  <body>
 
<div id='wrapper'> 
 <img src='http://worldofwarplanes.ru/dcont/fb/media/contest_24_02_2012/graf_grob.jpg'> 
  <a href='https://www.google.com.ua/'></a>
  <div>    
    
    <a href='#' onclick='newSize()'>size</a> 
    <script>
 
      function newSize() {
        var zoomL = 1000 / 640;
        var zoomT = 1000 / 480;
        
        _('img').style.width = 1000+'px';
        _('img').style.height = 1000+'px';
      
        _('a').style.left = 70 * zoomL+'px';
        _('a').style.top = 50 * zoomT+'px';
      }
     
           function _(selector) {
           return document.querySelectorAll(selector)[0];
             
           }
    </script>
 
  </body>
</html>
тут можно запустить http://learn.javascript.ru/play/Kpxci

Добавлено через 21 час 21 минуту
Проблема не в том как я расчитую, а в самих точка..
чем меньше точка тем меньше она уежает..
как решить не могу придумать, уже фиг знает сколько времени убил.
Может кто то подскажит?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.09.2012, 00:25
В начальной школе учились вы плохо... пропорции, увы, не освоили.

См. http://codecenter.awardspace.com/zoomtest0109.html
0
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79
01.09.2012, 01:32  [ТС]
в школе я учился просто ужасно.
но все пробелы в знаниях я потом по закрывал.
так что смотрите сами
исходный размер 1600
картинка до зума(исходный размер)


Добавлено через 1 минуту
ваш пример натолкнул меня на мысль, щас проверю ..
0
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79
01.09.2012, 02:20  [ТС]
а проблема то была не в расчетах новой позиции а в том что координаты точки учитываются с учетом ее масштабирования
Миниатюры
фиксация точек на картинке при зуме  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2012, 02:20
Помогаю со студенческими работами здесь

При клике, либо зуме карты изменять, добавлять, скрывать и т.д. контент на странице, вне карты.
День добрый, интересует такой вопрос возможно ли при клике, либо зуме карты, изменять, добавлять, скрывать и т.д. контент на странице, вне...

Фиксация меню при прокрутке
Всем привет! Ребята подскажите, как сделать так что бы при прокрутке верхнее меню было зафиксировано! Вот сам код: &lt;!DOCTYPE html...

Фиксация блока при скроллинге
Как мне добиться такого результата? Есть 2 блока. Первый выше, другой короче. Теперь когда я скроллю вниз то второй блок фиксируется,...

Фиксация элементов формы при скролинге
Здравствуйте. Допустим в Userform есть несколько кнопок и скролбар. Мне нужно чтобы некоторые кнопки при скролинге не двигались со своего...

Фиксация меню при прокрутке, где ошибка?
Здравствуйте! emk34.ru сайт выполнен на Joomla, идея следующая - зафиксировать меню при прокрутке, и это работает! Когда я сделал этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru