cyber,
У тебя должна быть текущая координата левого верхнего угла картинки карты и константы смещения пойнтера - leftt00 и тор00 (для каждой точки ) относительно левого верхнего угла картинки карты при максимальном масштабе карты (далее та же схема - что мну выше пояснил Далее ты вычисляешь поправку координаты пойнтера относительно карты, - домножая на zoom и добавляешь текущие координаты угла карты(относительно того родительского блока , где лежат пойнтеры), тогда любые погрешности карты не влияют на пойнтеры |
я устанавливаю координаты относительно 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'));
и потом умножаю их на зум |
вот не пойму где я напортачил , что появляется смещение=(
|
все таки дело не в отступе
<!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>
|
Deff, уже вариантов нет для точек, у тебя еще идеи остались?
|
пытаюсь понят как тут http://vectorflower.com/preview/smoo...m/sample5.html
у них точка почти не смещается |
cyber,
1. Всё абсолютно верно, если про логику работы, что я объяснял 2. Замеченные Баги на версии по ссылке => Первое небольшое увеличение(масштаба) - крутка колесиком на пол-щелчка - Всегда проходит корректно , без смещения точек относительно карты!, второе и последущие - глюки. cyber, а) Нет привязки координат точек к углу карты http://cyberua.16mb.com/files/general.jpg и выставления констант смещений(константы смещений приведенные к максимальному масштабу карты left и top точки (они посточнны и неизменяемы, меняеется лишь множитель zoom. 2) Нет явного вычисления координат угла картинки карты относительно id="zooming" |
Цитата:
т.е нет я определяю координаты блока zooming а его координаты такие же как и у карты Цитата:
Цитата:
|
Цитата:
Цитата:
и margin- тоp:-1/2высоты кружка - а так всё стоит - обведи верхнюю левую точку крепления кружка крестиком на картинке Для варианта метки - "Восклицательным знаком"(как сейчас на карте) = margin- тоp:-высота ("Значка") |
вот смотри
использовал плагин ленейку для хрома , и посчитал ширину от верха карты до точки(так как все не влезло на экран показано для высоты) на панельки в верху видно сколько от вверха карты, в консоли видно текущую позицию . исходные координаты точки left = 100; top = 100; начальная ширина карты = 1000px конечная = 4890 4890 / 1000 = 4,89; 4,89 * 100 = 489 ну вот где ошибка, почему точка уежает? ![]() |
| Часовой пояс GMT +3, время: 13:38. |