У меня есть изображение, которое отображается в фиксированном div.
<div>
<img src="path/to/image" id="map" />
</div>
Я использую свойство -webkit-transform для масштабирования и перехода к масштабированному изображению (другие браузеры не требуются. только webkit). Все делается с помощью javascript/jquery. Навигация работает в любом направлении. Максимальное масштабирование 10.
E.g.:
<button id="up">zoom in and move up</button>
$('#up').on('click',function() {
$('#map').css({'webkitTransform':'translateX('+SOME_VALUE+'px) translateY('+SOME_VALUE+'px) scale('+ SCALE +')'});
});
Все работает нормально.
Сложность в другом:
На изображении есть точка круга. Я знаю координаты этой точки и ее радиус (например, X-100px,Y-100px,R-10px); Эти координаты связаны с изображением.
Вопрос:
Как я могу определить, видна ли эта точка круга или нет, если изображение масштабируется? Как определить, какая область изображения видна? Как я могу определить его фактические координаты в измененном состоянии. Пожалуйста, не стесняйтесь взглянуть на пример изображения, на котором показано желаемое:
ОБНОВИТЬ:
К сожалению, приведенные ниже решения не совсем корректны. Умножая значение jquery высоты () и скорость масштабирования, вы не получите точных результатов. Я сам нашел решение. Существует следующее свойство javascript (не jquery):
элемент. getBoundingClientRect
Это свойство отражает реальные размеры измененного изображения и возвращает реальные координаты фактического положения. Использование с jquery следующее:
$('#some_element')[0].getBoundingClientRect();
Надеюсь, это будет полезно для тех ребят, которые столкнутся с проблемой в будущем :)