Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #111 (permalink)  
Старый 30.08.2012, 22:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

cyber,
У тебя должна быть текущая координата левого верхнего угла картинки карты и константы смещения пойнтера - leftt00 и тор00 (для каждой точки ) относительно левого верхнего угла картинки карты при максимальном масштабе карты (далее та же схема - что мну выше пояснил
Далее ты вычисляешь поправку координаты пойнтера относительно карты, - домножая на zoom и добавляешь текущие координаты угла карты(относительно того родительского блока , где лежат пойнтеры), тогда любые погрешности карты не влияют на пойнтеры

Последний раз редактировалось Deff, 31.08.2012 в 00:00.
Ответить с цитированием
  #112 (permalink)  
Старый 30.08.2012, 22:59
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

я устанавливаю координаты относительно zooming (блока в котором лежат карта и точки)
points.each(function() {

  var coords = $(this).offset();
  var zoomCoord = zooming.offset();
  
   $(this).css({
	  left: coords.left - zoomCoord.left +'px',
	  top: coords.top - zoomCoord.top +'px'  
	     
	   
	   });

и потом просто получаю координаты из самих точек (беру тот вариант который делал изначально, так как работают они одинаково и твой и мой)
var left = parseInt($(this).css('left'));
var top = parseInt($(this).css('top'));

и потом умножаю их на зум
Ответить с цитированием
  #113 (permalink)  
Старый 31.08.2012, 00:09
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

вот не пойму где я напортачил , что появляется смещение=(
Ответить с цитированием
  #114 (permalink)  
Старый 31.08.2012, 00:36
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

все таки дело не в отступе
<!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>

Последний раз редактировалось cyber, 31.08.2012 в 17:19.
Ответить с цитированием
  #115 (permalink)  
Старый 31.08.2012, 17:32
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Deff, уже вариантов нет для точек, у тебя еще идеи остались?
Ответить с цитированием
  #116 (permalink)  
Старый 31.08.2012, 18:36
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

пытаюсь понят как тут http://vectorflower.com/preview/smoo...m/sample5.html
у них точка почти не смещается
Ответить с цитированием
  #117 (permalink)  
Старый 31.08.2012, 19:22
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

cyber,
1. Всё абсолютно верно, если про логику работы, что я объяснял

2. Замеченные Баги на версии по ссылке =>
Первое небольшое увеличение(масштаба) - крутка колесиком на пол-щелчка - Всегда проходит корректно , без смещения точек относительно карты!, второе и последущие - глюки.

cyber,
а) Нет привязки координат точек к углу карты http://cyberua.16mb.com/files/general.jpg и выставления констант смещений(константы смещений приведенные к максимальному масштабу карты left и top точки (они посточнны и неизменяемы, меняеется лишь множитель zoom.

2) Нет явного вычисления координат угла картинки карты относительно id="zooming"
Ответить с цитированием
  #118 (permalink)  
Старый 31.08.2012, 19:39
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Цитата:
а) Нет привязки координат точек к углу карты http://cyberua.16mb.com/files/general.jpg
эм..
т.е нет я определяю координаты блока zooming а его координаты такие же как и у карты
Цитата:
выставления констант смещений(константы смещений приведенные к максимальному масштабу карты left и top точки
не уловил смысел, если ты про тот вариант что ты предлагал то вот сам глянь тут видна его погрешность http://learn.javascript.ru/play/LkXCU (нажать на кнопку size).
Цитата:
2) Нет явного вычисления координат угла картинки карты относительно id="zooming"
есть
Ответить с цитированием
  #119 (permalink)  
Старый 31.08.2012, 20:00
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от cyber
т.е нет я определяю координаты блока zooming а его координаты такие же как и у карты
Карта движецо относительно родителя - zooming - посколь у него позиция relative, любые лефт и топ для картинки - это смещения относительно родителя, - выставляй тады left=0 и top=0 у картинки карты,


Сообщение от cyber
не уловил смысел, если ты про тот вариант что ты предлагал то вот сам глянь тут видна его погрешность http://learn.javascript.ru/play/LkXCU (нажать на кнопку size).
Ты не добавил постоянный margin-left:-1/2ширины кружка
и margin- тоp:-1/2высоты кружка - а так всё стоит - обведи верхнюю левую точку крепления кружка крестиком на картинке

Для варианта метки - "Восклицательным знаком"(как сейчас на карте) = margin- тоp:-высота ("Значка")

Последний раз редактировалось Deff, 31.08.2012 в 20:04.
Ответить с цитированием
  #120 (permalink)  
Старый 31.08.2012, 20:04
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

вот смотри
использовал плагин ленейку для хрома , и посчитал ширину от верха карты до точки(так как все не влезло на экран показано для высоты) на панельки в верху видно сколько от вверха карты, в консоли видно текущую позицию .
исходные координаты точки left = 100; top = 100;
начальная ширина карты = 1000px
конечная = 4890
4890 / 1000 = 4,89;
4,89 * 100 = 489
ну вот где ошибка, почему точка уежает?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
drag & drop , html 5 cyber Events/DOM/Window 1 30.06.2012 15:16
Помогите с drag and drop shtopor jQuery 1 20.02.2012 13:26
Разбираюсь с drag and drop uaNikita Events/DOM/Window 4 22.09.2011 11:25
Drag & Drop с несколькими элементами Katz Общие вопросы Javascript 1 29.07.2011 13:01
Drag & Drop в полном объеме dizews Events/DOM/Window 3 26.07.2007 12:43