За последние 24 часа нас посетили 17714 программистов и 1672 робота. Сейчас ищут 1476 программистов ...

По разному размещаются точки отнисительно карты в ИЕ ФФ и О

Тема в разделе "JavaScript и AJAX", создана пользователем maleficmax, 27 окт 2008.

  1. maleficmax

    maleficmax Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    1
    Симпатии:
    0
    Итак, есть карта, которая находится в контексте страницы.
    На карты наносятся пометки-города.
    Дабы добавить гибкости, координаты точек вычисляются джаваскриптом как "координаты до карты" + "сдвиг относительно карты"
    Так вот, конструкция сия не работает в ИЕ (точки позиционирутся относительно угла окна, а не карты), отлично работает в ФФ3. А Опера первый раз сдвинула точки вобще вниз вправо (чересчур), а после обновления расположила нормально.
    Вот страница: http://autokraz.com.ua/rus/service/sto_ukr.php
    Имеющийся функционал - не полный, будуд всплывающие блоки, потому не судите "лишний" код.
    И немного сюда:
    1. функции расчета координат и расположения точки:
    [js]
    function ws_left(elem)
    {
    if ( elem.getBoundingClientRect )
    {
    return elem.getBoundingClientRect().left;
    }
    return elem.offsetLeft;
    }

    function ws_top(elem)
    {
    if ( elem.getBoundingClientRect )
    {
    return elem.getBoundingClientRect().top;
    }
    return elem.offsetTop;
    }

    function show_point(name, x, y)
    {
    var map = document.getElementById('map');
    var left = ws_left(map) + x;
    var top = ws_top(map) + y;
    var point = document.getElementById(name);
    point.style.position = 'absolute';
    point.style.left = left + 'px';
    point.style.top = top + 'px';
    point.style.display = 'block';
    }
    [/js]

    2. вставка точек идет так:
    [js]
    <script type="text/javascript">
    var a;
    a = show_point('dnepropetrovsk', 510, 226);
    a = show_point('doneck', 619, 245);
    a = show_point('jitomir', 258, 123);
    a = show_point('ivanofrankovsk', 99, 194);
    a = show_point('kiev', 331, 114);
    a = show_point('lugansk', 676, 204);
    a = show_point('lvov', 79, 136);
    a = show_point('odessa', 337, 351);
    a = show_point('poltava', 484, 160);
    a = show_point('rovno', 167, 97);
    a = show_point('harkov', 549, 130);
    a = show_point('hmelnickij', 192, 171);
    a = show_point('cherkassi', 388, 173);
    a = show_point('chernovci', 146, 235);
    </script>
    [/js]