2015-11-21 5 views
-1

Я работаю над страницей в ведьме, все ее содержимое масштабируется с помощью panzoom. Проблема в том, что когда я перетаскиваю что-то на странице, элемент перетаскивания получает плохое положение.Jquery draggable with panzoom

+0

вы можете Пози вашу соответствующую часть JS/HTML? – prasun

+0

Вы решили эту проблему? – Aboodred1

+0

Вы решили эту проблему? № –

ответ

1

Я не уверен, но, возможно, нашел ответ.

Здесь две точка:

  • Не двигайтесь фоном при перетаскивании объекта
  • перемещения курсора Масштаба по второстепенной шкале

Ниже моему код для увеличенного фона и двигаться объект над ним. Шкала курсора на основе this answer

HTML

<script src = "/js/vendors/jquery-ui.min.js"></script> 
<script src = "/js/vendors/jquery.panzoom.min.js"></script> 

<div id = "map-viewport"> 
    <div id = "map"> 
     <div class = "draggable">1</div> 
     <div class = "draggable">2</div> 
    </div> 
</div> 

JS

var map = $('#map'); 
var viewport = $('#map-viewport'); 

map.panzoom({ 
    increment: 0.1, 
    minScale: 1, 
    contain: 'invert' 
}); 

viewport.on('wheel', function(e) { 
    e.preventDefault(); 
    var delta = e.delta || e.originalEvent.wheelDelta; 
    var zoomOut = delta ? delta < 0 : e.originalEvent.deltaY > 0; 
    map.panzoom('zoom', zoomOut, { 
     increment: 0.2, 
     animate: false, 
     focal: e.originalEvent 
    }); 
}); 

var click = { x: 0, y: 0}; 

$('.draggable') 
    .draggable({ 
     containment: 'parent', 
     start: function(e) { 
      click.x = e.clientX; 
      click.y = e.clientY; 
     }, 

     drag: function(e, ui) { 
      var m = map.panzoom('getMatrix'); 
      var zoom = Math.sqrt(m[0] * m[3]); // zoom don't change proportion and scale 
      var original = ui.originalPosition; 

      ui.position = { 
       left: (e.clientX - click.x + original.left)/zoom, 
       top: (e.clientY - click.y + original.top)/zoom 
      }; 
     } 
    }) 
    .on('mousedown', function(e){ 
     e.stopImmediatePropagation(); 
     return false; 
    }); 
+0

спасибо Уважаемые :) Я попробую это и проведу –

+0

Вы можете найти полный пример [здесь] (http://sgeproject.narod.ru/node/panzoom.zip). Я добавляю некоторые глупые исправления Chrome. В Chrome 'mousemove' запускается объект map map map. Я подозреваю, что это столкновение между свойствами 'z-index' и' transform'. –

+0

@AikonMogwai Когда я запускаю это и увеличиваю масштаб на карте, тогда переместите перетаскиваемое положение. Мой курсор находится в одном месте, а круг вверх и слева от него. Кроме того, когда моя мышь находится над синим, и я увеличен на карте, отображается больше карты. Какие-нибудь идеи, что там происходит? – user441521

Смежные вопросы